[INFO] fetching crate rninja 0.1.0...
[INFO] testing rninja-0.1.0 against try#0abe69e6c16114311cc2700e972492e64d69c28f for pr-154065
[INFO] extracting crate rninja 0.1.0 into /workspace/builds/worker-6-tc2/source
[INFO] started tweaking crates.io crate rninja 0.1.0
[INFO] finished tweaking crates.io crate rninja 0.1.0
[INFO] tweaked toml for crates.io crate rninja 0.1.0 written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate rninja 0.1.0 on toolchain 0abe69e6c16114311cc2700e972492e64d69c28f
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate rninja 0.1.0 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 5f6758a3191047f0cebcf72dc6e7012c8529d81a7361706032fbda901c32f3d4
[INFO] running `Command { std: "docker" "start" "-a" "5f6758a3191047f0cebcf72dc6e7012c8529d81a7361706032fbda901c32f3d4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "5f6758a3191047f0cebcf72dc6e7012c8529d81a7361706032fbda901c32f3d4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5f6758a3191047f0cebcf72dc6e7012c8529d81a7361706032fbda901c32f3d4", kill_on_drop: false }`
[INFO] [stdout] 5f6758a3191047f0cebcf72dc6e7012c8529d81a7361706032fbda901c32f3d4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] fad4486406af6908316045675107a8c362f17c1ec3b4f5f91ad6adf018a78203
[INFO] running `Command { std: "docker" "start" "-a" "fad4486406af6908316045675107a8c362f17c1ec3b4f5f91ad6adf018a78203", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.178
[INFO] [stderr]    Compiling zerocopy v0.8.31
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling cmake v0.1.57
[INFO] [stderr]    Compiling parking_lot_core v0.8.6
[INFO] [stderr]    Compiling cfg_aliases v0.2.1
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.18
[INFO] [stderr]    Compiling instant v0.1.13
[INFO] [stderr]    Compiling tracing-core v0.1.35
[INFO] [stderr]    Compiling is_terminal_polyfill v1.70.2
[INFO] [stderr]    Compiling ptr_meta_derive v0.3.1
[INFO] [stderr]    Compiling bytecheck_derive v0.8.2
[INFO] [stderr]    Compiling portable-atomic v1.13.0
[INFO] [stderr]    Compiling regex-syntax v0.8.8
[INFO] [stderr]    Compiling simdutf8 v0.1.5
[INFO] [stderr]    Compiling nix v0.30.1
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling anstyle-query v1.1.5
[INFO] [stderr]    Compiling anstyle v1.0.13
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]    Compiling munge_macro v0.4.7
[INFO] [stderr]    Compiling anstream v0.6.21
[INFO] [stderr]    Compiling crossbeam-deque v0.8.6
[INFO] [stderr]    Compiling blake3 v1.8.2
[INFO] [stderr]    Compiling ptr_meta v0.3.1
[INFO] [stderr]    Compiling raw-cpuid v11.6.0
[INFO] [stderr]    Compiling nng-sys v1.4.0-rc.0
[INFO] [stderr]    Compiling rancor v0.1.1
[INFO] [stderr]    Compiling thiserror v2.0.17
[INFO] [stderr]    Compiling bitflags v1.3.2
[INFO] [stderr]    Compiling clap_lex v0.7.6
[INFO] [stderr]    Compiling linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling bytecheck v0.8.2
[INFO] [stderr]    Compiling serde_json v1.0.147
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling byteorder v1.5.0
[INFO] [stderr]    Compiling anyhow v1.0.100
[INFO] [stderr]    Compiling munge v0.4.7
[INFO] [stderr]    Compiling rmp v0.8.15
[INFO] [stderr]    Compiling clap_builder v4.5.53
[INFO] [stderr]    Compiling clap_derive v4.5.49
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling rend v0.5.3
[INFO] [stderr]    Compiling fxhash v0.2.1
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]    Compiling tracing v0.1.43
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling rkyv_derive v0.8.12
[INFO] [stderr]    Compiling thiserror-impl v2.0.17
[INFO] [stderr]    Compiling spinning_top v0.3.0
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling regex-automata v0.4.13
[INFO] [stderr]    Compiling arrayref v0.3.9
[INFO] [stderr]    Compiling constant_time_eq v0.3.1
[INFO] [stderr]    Compiling nonzero_ext v0.3.0
[INFO] [stderr]    Compiling no-std-compat v0.4.1
[INFO] [stderr]    Compiling nu-ansi-term v0.50.3
[INFO] [stderr]    Compiling hashbrown v0.15.5
[INFO] [stderr]    Compiling env_home v0.1.0
[INFO] [stderr]    Compiling iana-time-zone v0.1.64
[INFO] [stderr]    Compiling zmij v0.1.7
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling getrandom v0.2.16
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling inotify-sys v0.1.5
[INFO] [stderr]    Compiling dashmap v5.5.3
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling inotify v0.9.6
[INFO] [stderr]    Compiling parking_lot v0.11.2
[INFO] [stderr]    Compiling quanta v0.12.6
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling filetime v0.2.26
[INFO] [stderr]    Compiling fs2 v0.4.3
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling signal-hook-registry v1.4.7
[INFO] [stderr]    Compiling dirs-sys-next v0.1.2
[INFO] [stderr]    Compiling mio v0.8.11
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling socket2 v0.6.1
[INFO] [stderr]    Compiling arrayvec v0.7.6
[INFO] [stderr]    Compiling itoa v1.0.16
[INFO] [stderr]    Compiling notify v6.1.1
[INFO] [stderr]    Compiling governor v0.6.3
[INFO] [stderr]    Compiling ctrlc v3.5.1
[INFO] [stderr]    Compiling uuid v1.19.0
[INFO] [stderr]    Compiling dirs-next v2.0.0
[INFO] [stderr]    Compiling tokio v1.48.0
[INFO] [stderr]    Compiling which v7.0.3
[INFO] [stderr]    Compiling clap v4.5.53
[INFO] [stderr]    Compiling sled v0.34.7
[INFO] [stderr]    Compiling dashmap v6.1.0
[INFO] [stderr]    Compiling chrono v0.4.42
[INFO] [stderr]    Compiling atty v0.2.14
[INFO] [stderr]    Compiling hostname v0.4.2
[INFO] [stderr]    Compiling console v0.15.11
[INFO] [stderr]    Compiling num_cpus v1.17.0
[INFO] [stderr]    Compiling memmap2 v0.9.9
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling tracing-subscriber v0.3.22
[INFO] [stderr]    Compiling rayon v1.11.0
[INFO] [stderr]    Compiling rmp-serde v1.3.1
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling rkyv v0.8.12
[INFO] [stderr]    Compiling nng v1.0.1
[INFO] [stderr]    Compiling rninja v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/admin/cache_stats.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::os::unix::fs::PermissionsExt`
[INFO] [stdout]   --> src/cache/blob.rs:64:17
[INFO] [stdout]    |
[INFO] [stdout] 64 |             use std::os::unix::fs::PermissionsExt;
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PROTOCOL_VERSION`
[INFO] [stdout]  --> src/cache/remote/client.rs:8:25
[INFO] [stdout]   |
[INFO] [stdout] 8 |     DEFAULT_CHUNK_SIZE, PROTOCOL_VERSION,
[INFO] [stdout]   |                         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PathBuf`
[INFO] [stdout]   --> src/cache/mod.rs:16:23
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::path::{Path, PathBuf};
[INFO] [stdout]    |                       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/cache/mod.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Instant`
[INFO] [stdout]   --> src/cache/mod.rs:18:27
[INFO] [stdout]    |
[INFO] [stdout] 18 | use std::time::{Duration, Instant, SystemTime};
[INFO] [stdout]    |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/daemon/watcher.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `nng::options::Options`
[INFO] [stdout]   --> src/server/handler.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use nng::options::Options;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `parking_lot::RwLock`
[INFO] [stdout]   --> src/server/handler.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use parking_lot::RwLock;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AtomicU64`
[INFO] [stdout]   --> src/server/handler.rs:16:25
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::sync::atomic::{AtomicU64, Ordering};
[INFO] [stdout]    |                         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AtomicBool`
[INFO] [stdout]   --> src/server/mod.rs:14:25
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::sync::atomic::{AtomicBool, AtomicU64, Ordering};
[INFO] [stdout]    |                         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/server/mod.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Instant`
[INFO] [stdout]   --> src/server/mod.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::time::Instant;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `verbose`
[INFO] [stdout]   --> src/admin/cache_health.rs:41:25
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub fn run_cache_health(verbose: bool, json: bool) -> Result<HealthReport, ExecError> {
[INFO] [stdout]    |                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_verbose`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `verbose`
[INFO] [stdout]   --> src/admin/cache_stats.rs:43:24
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub fn run_cache_stats(verbose: bool, json: bool) -> Result<(), ExecError> {
[INFO] [stdout]    |                        ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_verbose`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `blob_store`
[INFO] [stdout]    --> src/cache/remote/client.rs:370:9
[INFO] [stdout]     |
[INFO] [stdout] 370 |         blob_store: &BlobStore,
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_blob_store`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `db`
[INFO] [stdout]    --> src/cache/schema.rs:151:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | fn migrate(db: &sled::Db, from_version: u32) -> Result<MigrationStats, ExecError> {
[INFO] [stdout]     |            ^^ help: if this is intentional, prefix it with an underscore: `_db`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from_version`
[INFO] [stdout]    --> src/cache/schema.rs:151:27
[INFO] [stdout]     |
[INFO] [stdout] 151 | fn migrate(db: &sled::Db, from_version: u32) -> Result<MigrationStats, ExecError> {
[INFO] [stdout]     |                           ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_from_version`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `now`
[INFO] [stdout]    --> src/cache/mod.rs:421:13
[INFO] [stdout]     |
[INFO] [stdout] 421 |         let now = SystemTime::now();
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_now`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hash_bytes` is never used
[INFO] [stdout]   --> src/cache/hasher.rs:76:8
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub fn hash_bytes(data: &[u8]) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `socket` is never read
[INFO] [stdout]   --> src/client/connection.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct DaemonClient {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] 26 |     socket_path: PathBuf,
[INFO] [stdout] 27 |     socket: Option<nng::Socket>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `event_tx` is never read
[INFO] [stdout]   --> src/daemon/watcher.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct FileWatcher {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 39 |     event_tx: Sender<WatchEvent>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `trace_begin` is never used
[INFO] [stdout]    --> src/executor/mod.rs:202:8
[INFO] [stdout]     |
[INFO] [stdout] 128 | impl BuildState {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 202 |     fn trace_begin(&self, target: &str, command: Option<&str>, tid: u32) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_command` is never used
[INFO] [stdout]  --> src/executor/runner.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn run_command(cmd: &str) -> io::Result<Output> {
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_command_streaming` is never used
[INFO] [stdout]   --> src/executor/runner.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub fn run_command_streaming(cmd: &str) -> io::Result<i32> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `command_exists` is never used
[INFO] [stdout]   --> src/executor/runner.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub fn command_exists(name: &str) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rules` is never read
[INFO] [stdout]   --> src/graph/mod.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct Graph {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 25 |     rules: HashMap<String, Rule>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Graph` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `is_tty` is never read
[INFO] [stdout]    --> src/output.rs:238:5
[INFO] [stdout]     |
[INFO] [stdout] 234 | pub struct ProgressHandle {
[INFO] [stdout]     |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 238 |     is_tty: bool,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ProgressHandle` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `content` and `continued_line` are never read
[INFO] [stdout]  --> src/parser/lexer.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct Lexer<'a> {
[INFO] [stdout]   |            ----- fields in this struct
[INFO] [stdout] 3 |     content: &'a str,
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 7 |     continued_line: Option<String>,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `blobs` is never read
[INFO] [stdout]   --> src/server/handler.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct CacheServer {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 25 |     blobs: BlobStore,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `start_timestamp` is never read
[INFO] [stdout]   --> src/trace.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct BuildTrace {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 39 |     start_timestamp: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/admin/cache_stats.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `GcReport`
[INFO] [stdout]  --> src/admin/mod.rs:9:45
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use cache_gc::{run_cache_gc, GcOptions, GcReport};
[INFO] [stdout]   |                                             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HealthCheck`, `HealthReport`, and `HealthStatus`
[INFO] [stdout]   --> src/admin/mod.rs:10:42
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use cache_health::{run_cache_health, HealthCheck, HealthReport, HealthStatus};
[INFO] [stdout]    |                                          ^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CacheStatsReport`
[INFO] [stdout]   --> src/admin/mod.rs:11:40
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use cache_stats::{run_cache_stats, CacheStatsReport};
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::os::unix::fs::PermissionsExt`
[INFO] [stdout]   --> src/cache/blob.rs:64:17
[INFO] [stdout]    |
[INFO] [stdout] 64 |             use std::os::unix::fs::PermissionsExt;
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PROTOCOL_VERSION`
[INFO] [stdout]  --> src/cache/remote/client.rs:8:25
[INFO] [stdout]   |
[INFO] [stdout] 8 |     DEFAULT_CHUNK_SIZE, PROTOCOL_VERSION,
[INFO] [stdout]   |                         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ClientStats`
[INFO] [stdout]  --> src/cache/remote/mod.rs:9:18
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use client::{ClientStats, RemoteCacheClient, RemoteClientConfig, RetryConfig};
[INFO] [stdout]   |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ErrorCode`, `PROTOCOL_VERSION`, `RequestEnvelope`, `Request`, and `Response`
[INFO] [stdout]   --> src/cache/remote/mod.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     ErrorCode, Request, RequestEnvelope, Response, WireCacheEntry, PROTOCOL_VERSION,
[INFO] [stdout]    |     ^^^^^^^^^  ^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CURRENT_SCHEMA_VERSION`, `SchemaInfo`, and `check_and_migrate`
[INFO] [stdout]  --> src/cache/mod.rs:9:18
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use schema::{check_and_migrate, SchemaInfo, CURRENT_SCHEMA_VERSION};
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RemoteCacheConfig`
[INFO] [stdout]   --> src/cache/mod.rs:10:66
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use config::{CacheConfig, CacheMode, PullPolicy, PushPolicy, RemoteCacheConfig};
[INFO] [stdout]    |                                                                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PathBuf`
[INFO] [stdout]   --> src/cache/mod.rs:16:23
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::path::{Path, PathBuf};
[INFO] [stdout]    |                       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/cache/mod.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Instant`
[INFO] [stdout]   --> src/cache/mod.rs:18:27
[INFO] [stdout]    |
[INFO] [stdout] 18 | use std::time::{Duration, Instant, SystemTime};
[INFO] [stdout]    |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `nng::options::Options`
[INFO] [stdout]   --> src/server/handler.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use nng::options::Options;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `parking_lot::RwLock`
[INFO] [stdout]   --> src/server/handler.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use parking_lot::RwLock;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AtomicU64`
[INFO] [stdout]   --> src/server/handler.rs:16:25
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::sync::atomic::{AtomicU64, Ordering};
[INFO] [stdout]    |                         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AtomicBool`
[INFO] [stdout]   --> src/server/mod.rs:14:25
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::sync::atomic::{AtomicBool, AtomicU64, Ordering};
[INFO] [stdout]    |                         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/server/mod.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Instant`
[INFO] [stdout]   --> src/server/mod.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::time::Instant;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `verbose`
[INFO] [stdout]   --> src/admin/cache_health.rs:41:25
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub fn run_cache_health(verbose: bool, json: bool) -> Result<HealthReport, ExecError> {
[INFO] [stdout]    |                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_verbose`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `verbose`
[INFO] [stdout]   --> src/admin/cache_stats.rs:43:24
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub fn run_cache_stats(verbose: bool, json: bool) -> Result<(), ExecError> {
[INFO] [stdout]    |                        ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_verbose`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `blob_store`
[INFO] [stdout]    --> src/cache/remote/client.rs:370:9
[INFO] [stdout]     |
[INFO] [stdout] 370 |         blob_store: &BlobStore,
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_blob_store`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `db`
[INFO] [stdout]    --> src/cache/schema.rs:151:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | fn migrate(db: &sled::Db, from_version: u32) -> Result<MigrationStats, ExecError> {
[INFO] [stdout]     |            ^^ help: if this is intentional, prefix it with an underscore: `_db`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from_version`
[INFO] [stdout]    --> src/cache/schema.rs:151:27
[INFO] [stdout]     |
[INFO] [stdout] 151 | fn migrate(db: &sled::Db, from_version: u32) -> Result<MigrationStats, ExecError> {
[INFO] [stdout]     |                           ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_from_version`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `now`
[INFO] [stdout]    --> src/cache/mod.rs:421:13
[INFO] [stdout]     |
[INFO] [stdout] 421 |         let now = SystemTime::now();
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_now`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_mtime` and `needs_rebuild` are never used
[INFO] [stdout]    --> src/buildlog.rs:112:12
[INFO] [stdout]     |
[INFO] [stdout]  33 | impl BuildLog {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn get_mtime(&self, output: &str) -> Option<u64> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn needs_rebuild(&self, output: &str, command_hash: u64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `invalidate`, `prefetch`, `prefetch_parallel`, and `insert` are never used
[INFO] [stdout]    --> src/buildlog.rs:208:12
[INFO] [stdout]     |
[INFO] [stdout] 189 | impl MtimeCache {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn invalidate(&mut self, path: &Path) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub fn prefetch(&mut self, paths: &[&Path]) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn prefetch_parallel(&mut self, paths: &[PathBuf]) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub fn insert(&mut self, path: PathBuf, mtime: Option<u64>) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `remote_hits`, `remote_misses`, `remote_errors`, and `remote_timeouts` are never read
[INFO] [stdout]   --> src/cache/mod.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct CacheStats {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub remote_hits: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 30 |     pub remote_misses: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 31 |     pub remote_errors: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 32 |     pub remote_timeouts: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CacheStats` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `hit_rate`, `total_hits`, `total_misses`, and `combined_hit_rate` are never used
[INFO] [stdout]   --> src/cache/mod.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 35 | impl CacheStats {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] 36 |     pub fn hit_rate(&self) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn total_hits(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn total_misses(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn combined_hit_rate(&self) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `remote` is never read
[INFO] [stdout]   --> src/cache/mod.rs:74:5
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub struct Cache {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 74 |     remote: Option<RemoteCacheClient>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/cache/mod.rs:149:12
[INFO] [stdout]     |
[INFO] [stdout]  77 | impl Cache {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn mode(&self) -> CacheMode {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub fn has_remote(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub async fn connect_remote(&self) -> Result<(), RemoteCacheError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub async fn lookup_async(&self, key: &str) -> Option<CacheEntry> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     async fn lookup_remote(&self, key: &str) -> Option<CacheEntry> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 351 |     pub async fn store_async(
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 391 |     fn should_push(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 403 |     pub fn restore(&self, entry: &CacheEntry) -> Result<bool, ExecError> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 414 |     pub fn stats(&self) -> CacheStats {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 419 |     pub fn gc(&self) -> Result<GcStats, ExecError> {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 467 |     pub fn is_enabled(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GcStats` is never constructed
[INFO] [stdout]    --> src/cache/mod.rs:474:12
[INFO] [stdout]     |
[INFO] [stdout] 474 | pub struct GcStats {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `restore`, `exists`, `gc`, and `total_size` are never used
[INFO] [stdout]    --> src/cache/blob.rs:74:12
[INFO] [stdout]     |
[INFO] [stdout]  14 | impl BlobStore {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  74 |     pub fn restore(&self, hash: &str, dest: &Path) -> Result<bool, ExecError> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn exists(&self, hash: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub fn gc(&self) -> Result<BlobGcStats, ExecError> {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     pub fn total_size(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BlobGcStats` is never constructed
[INFO] [stdout]    --> src/cache/blob.rs:179:12
[INFO] [stdout]     |
[INFO] [stdout] 179 | pub struct BlobGcStats {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `auto_migrate` is never read
[INFO] [stdout]    --> src/cache/config.rs:183:9
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub struct CacheConfig {
[INFO] [stdout]     |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 183 |     pub auto_migrate: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `CacheConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `disabled` is never used
[INFO] [stdout]    --> src/cache/config.rs:249:12
[INFO] [stdout]     |
[INFO] [stdout] 200 | impl CacheConfig {
[INFO] [stdout]     | ---------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub fn disabled() -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hash_bytes` is never used
[INFO] [stdout]   --> src/cache/hasher.rs:76:8
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub fn hash_bytes(data: &[u8]) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `client_id`, `connect_timeout`, `request_timeout`, `chunk_size`, and `retry` are never read
[INFO] [stdout]   --> src/cache/remote/client.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct RemoteClientConfig {
[INFO] [stdout]    |            ------------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub client_id: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 30 |     /// Connection timeout
[INFO] [stdout] 31 |     pub connect_timeout: Duration,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 32 |     /// Request timeout
[INFO] [stdout] 33 |     pub request_timeout: Duration,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub chunk_size: usize,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 38 |     /// Retry configuration
[INFO] [stdout] 39 |     pub retry: RetryConfig,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RemoteClientConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `max_retries`, `initial_backoff`, and `max_backoff` are never read
[INFO] [stdout]   --> src/cache/remote/client.rs:61:9
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct RetryConfig {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 60 |     /// Maximum number of retry attempts
[INFO] [stdout] 61 |     pub max_retries: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 62 |     /// Initial backoff duration
[INFO] [stdout] 63 |     pub initial_backoff: Duration,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 64 |     /// Maximum backoff duration
[INFO] [stdout] 65 |     pub max_backoff: Duration,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RetryConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/cache/remote/client.rs:81:9
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub struct ClientStats {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 81 |     pub requests_sent: AtomicU64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 82 |     pub requests_failed: AtomicU64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 83 |     pub bytes_sent: AtomicU64,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 84 |     pub bytes_received: AtomicU64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 85 |     pub cache_hits: AtomicU64,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 86 |     pub cache_misses: AtomicU64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 87 |     pub retries: AtomicU64,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 88 |     pub avg_latency_us: AtomicU64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 89 |     latency_samples: AtomicUsize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 90 |     latency_sum_us: AtomicU64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ClientStats` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `record_request`, `record_latency`, `record_hit`, `record_miss`, `record_failure`, and `record_retry` are never used
[INFO] [stdout]    --> src/cache/remote/client.rs:94:12
[INFO] [stdout]     |
[INFO] [stdout]  93 | impl ClientStats {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout]  94 |     pub fn record_request(&self, bytes_sent: usize, bytes_received: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn record_latency(&self, latency: Duration) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn record_hit(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn record_miss(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn record_failure(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn record_retry(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `config`, `semaphore`, and `stats` are never read
[INFO] [stdout]    --> src/cache/remote/client.rs:129:5
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub struct RemoteCacheClient {
[INFO] [stdout]     |            ----------------- fields in this struct
[INFO] [stdout] 129 |     config: RemoteClientConfig,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 130 |     socket: RwLock<Option<nng::Socket>>,
[INFO] [stdout] 131 |     semaphore: Arc<Semaphore>,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 132 |     stats: Arc<ClientStats>,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/cache/remote/client.rs:163:18
[INFO] [stdout]     |
[INFO] [stdout] 136 | impl RemoteCacheClient {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub async fn connect(&self) -> Result<(), RemoteCacheError> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub fn is_connected(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     pub fn stats(&self) -> &ClientStats {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     fn generate_client_id() -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 229 |     async fn send_request(&self, request: Request) -> Result<Response, RemoteCacheError> {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 286 |     async fn send_with_retry(&self, request: Request) -> Result<Response, RemoteCacheError> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub async fn ping(&self) -> Result<String, RemoteCacheError> {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 330 |     pub async fn exists(&self, keys: &[&str]) -> Result<HashMap<String, bool>, RemoteCacheError> {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 345 |     pub async fn lookup(&self, key: &str) -> Result<Option<WireCacheEntry>, RemoteCacheError> {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |     pub async fn pull_blobs(
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 398 |     pub async fn push_entry(
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 418 |     pub async fn push_blob(&self, hash: &str, data: &[u8]) -> Result<(), RemoteCacheError> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 454 |     pub async fn push_blob_from_file(&self, path: &Path) -> Result<String, RemoteCacheError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 466 |     pub async fn server_stats(&self) -> Result<(u64, u64, u64, u64), RemoteCacheError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/cache/remote/error.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub enum RemoteCacheError {
[INFO] [stdout]    |          ---------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 11 |     ConnectionFailed(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 15 |     ConnectionTimeout(u64),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     RequestTimeout(u64),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     AuthFailed(String),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     ServerError { code: ErrorCode, message: String },
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     RateLimited(String),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     InvalidResponse(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     Shutdown,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     BlobTransferFailed(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     ChecksumMismatch {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RemoteCacheError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_retryable` and `is_fatal` are never used
[INFO] [stdout]   --> src/cache/remote/error.rs:68:12
[INFO] [stdout]    |
[INFO] [stdout] 66 | impl RemoteCacheError {
[INFO] [stdout]    | --------------------- methods in this implementation
[INFO] [stdout] 67 |     /// Check if this error is retryable
[INFO] [stdout] 68 |     pub fn is_retryable(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 83 |     pub fn is_fatal(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PROTOCOL_VERSION` is never used
[INFO] [stdout]   --> src/cache/remote/protocol.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const PROTOCOL_VERSION: u32 = 1;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AuthHeader` is never constructed
[INFO] [stdout]   --> src/cache/remote/protocol.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct AuthHeader {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RequestEnvelope` is never constructed
[INFO] [stdout]   --> src/cache/remote/protocol.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct RequestEnvelope {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/cache/remote/protocol.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl RequestEnvelope {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 37 |     pub fn new(token: String, client_id: Option<String>, request: Request) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WireCacheEntry` is never constructed
[INFO] [stdout]   --> src/cache/remote/protocol.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct WireCacheEntry {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_entry`, `to_outputs`, and `created_time` are never used
[INFO] [stdout]   --> src/cache/remote/protocol.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | impl WireCacheEntry {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 60 |     pub fn from_entry(command: &str, outputs: &[(PathBuf, String)], created: SystemTime) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn to_outputs(&self) -> Vec<(PathBuf, String)> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 83 |     pub fn created_time(&self) -> SystemTime {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Request` is never used
[INFO] [stdout]   --> src/cache/remote/protocol.rs:90:10
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub enum Request {
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Response` is never used
[INFO] [stdout]    --> src/cache/remote/protocol.rs:144:10
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub enum Response {
[INFO] [stdout]     |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `error` and `is_error` are never used
[INFO] [stdout]    --> src/cache/remote/protocol.rs:187:12
[INFO] [stdout]     |
[INFO] [stdout] 186 | impl Response {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] 187 |     pub fn error(code: ErrorCode, message: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 194 |     pub fn is_error(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `serialize_request` is never used
[INFO] [stdout]    --> src/cache/remote/protocol.rs:200:8
[INFO] [stdout]     |
[INFO] [stdout] 200 | pub fn serialize_request(envelope: &RequestEnvelope) -> Result<Vec<u8>, rmp_serde::encode::Error> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `deserialize_request` is never used
[INFO] [stdout]    --> src/cache/remote/protocol.rs:205:8
[INFO] [stdout]     |
[INFO] [stdout] 205 | pub fn deserialize_request(data: &[u8]) -> Result<RequestEnvelope, rmp_serde::decode::Error> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `serialize_response` is never used
[INFO] [stdout]    --> src/cache/remote/protocol.rs:210:8
[INFO] [stdout]     |
[INFO] [stdout] 210 | pub fn serialize_response(response: &Response) -> Result<Vec<u8>, rmp_serde::encode::Error> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `deserialize_response` is never used
[INFO] [stdout]    --> src/cache/remote/protocol.rs:215:8
[INFO] [stdout]     |
[INFO] [stdout] 215 | pub fn deserialize_response(data: &[u8]) -> Result<Response, rmp_serde::decode::Error> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CURRENT_SCHEMA_VERSION` is never used
[INFO] [stdout]   --> src/cache/schema.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub const CURRENT_SCHEMA_VERSION: u32 = 1;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SCHEMA_KEY` is never used
[INFO] [stdout]   --> src/cache/schema.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const SCHEMA_KEY: &[u8] = b"__rninja_schema__";
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SchemaInfo` is never constructed
[INFO] [stdout]   --> src/cache/schema.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct SchemaInfo {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `current`, `serialize`, and `deserialize` are never used
[INFO] [stdout]   --> src/cache/schema.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl SchemaInfo {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 29 |     /// Create schema info for a new cache
[INFO] [stdout] 30 |     pub fn current() -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn serialize(&self) -> Result<Vec<u8>, ExecError> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn deserialize(data: &[u8]) -> Result<Self, ExecError> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MigrationStats` is never constructed
[INFO] [stdout]   --> src/cache/schema.rs:67:12
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub struct MigrationStats {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_and_migrate` is never used
[INFO] [stdout]   --> src/cache/schema.rs:75:8
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub fn check_and_migrate(db: &sled::Db, auto_migrate: bool) -> Result<SchemaInfo, ExecError> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `migrate` is never used
[INFO] [stdout]    --> src/cache/schema.rs:151:4
[INFO] [stdout]     |
[INFO] [stdout] 151 | fn migrate(db: &sled::Db, from_version: u32) -> Result<MigrationStats, ExecError> {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `keep_depfile` is never used
[INFO] [stdout]   --> src/cli.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 68 | impl Cli {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn keep_depfile(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `default_config_path` is never used
[INFO] [stdout]    --> src/config.rs:155:12
[INFO] [stdout]     |
[INFO] [stdout] 102 | impl Config {
[INFO] [stdout]     | ----------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn default_config_path() -> Option<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `UnknownRule` and `MissingVariable` are never constructed
[INFO] [stdout]   --> src/error.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum ParseError {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout]  9 |     UnknownRule { name: String },
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 15 |     MissingVariable { var: String, rule: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ParseError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `trace_begin` is never used
[INFO] [stdout]    --> src/executor/mod.rs:202:8
[INFO] [stdout]     |
[INFO] [stdout] 128 | impl BuildState {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 202 |     fn trace_begin(&self, target: &str, command: Option<&str>, tid: u32) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_command` is never used
[INFO] [stdout]  --> src/executor/runner.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn run_command(cmd: &str) -> io::Result<Output> {
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_command_streaming` is never used
[INFO] [stdout]   --> src/executor/runner.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub fn run_command_streaming(cmd: &str) -> io::Result<i32> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `command_exists` is never used
[INFO] [stdout]   --> src/executor/runner.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub fn command_exists(name: &str) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rules` is never read
[INFO] [stdout]   --> src/graph/mod.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct Graph {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 25 |     rules: HashMap<String, Rule>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Graph` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `nodes` is never used
[INFO] [stdout]    --> src/graph/mod.rs:120:12
[INFO] [stdout]     |
[INFO] [stdout]  32 | impl Graph {
[INFO] [stdout]     | ---------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn nodes(&self) -> impl Iterator<Item = &Node> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `rule`, `restat`, and `generator` are never read
[INFO] [stdout]   --> src/graph/node.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout]  3 | pub struct Node {
[INFO] [stdout]    |            ---- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 15 |     pub rule: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub restat: bool,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub generator: bool,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Node` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `display` is never used
[INFO] [stdout]   --> src/graph/node.rs:72:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl Node {
[INFO] [stdout]    | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 72 |     pub fn display(&self) -> &str {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BuildMetrics` is never constructed
[INFO] [stdout]   --> src/metrics/mod.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct BuildMetrics {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/metrics/mod.rs:40:12
[INFO] [stdout]     |
[INFO] [stdout]  39 | impl BuildMetrics {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout]  40 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  44 |     pub fn record_target_built(&self, exec_time: Duration) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub fn record_target_skipped(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  54 |     pub fn record_target_failed(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  58 |     pub fn record_cache_hit(&self, lookup_time: Duration) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub fn record_cache_miss(&self, lookup_time: Duration) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn record_cache_store(&self, store_time: Duration) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn record_queue_depth(&self, depth: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn set_total_targets(&self, count: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn set_build_time(&self, duration: Duration) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn cache_hit_rate(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn snapshot(&self) -> MetricsSnapshot {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MetricsSnapshot` is never constructed
[INFO] [stdout]    --> src/metrics/mod.rs:126:12
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub struct MetricsSnapshot {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `cache_hit_rate` and `to_json` are never used
[INFO] [stdout]    --> src/metrics/mod.rs:145:12
[INFO] [stdout]     |
[INFO] [stdout] 144 | impl MetricsSnapshot {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] 145 |     pub fn cache_hit_rate(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub fn to_json(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `export_prometheus` is never used
[INFO] [stdout]  --> src/metrics/prometheus.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn export_prometheus(snapshot: &MetricsSnapshot) -> String {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Error` is never constructed
[INFO] [stdout]   --> src/output.rs:70:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub enum JsonEvent<'a> {
[INFO] [stdout]    |          --------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 70 |     Error {
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `JsonEvent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Styles` is never constructed
[INFO] [stdout]   --> src/output.rs:88:12
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub struct Styles {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProgressReporter` is never constructed
[INFO] [stdout]    --> src/output.rs:111:12
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub struct ProgressReporter {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/output.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 123 | impl ProgressReporter {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 124 |     pub fn new(total: usize, verbose: bool) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn with_mode(total: usize, verbose: bool, output_mode: OutputMode, parallelism: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub fn handle(&self) -> ProgressHandle {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn start(&self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 174 |     pub fn finish(&self, success: bool, duration_ms: u64) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn finish_with_cache(&self, success: bool, duration_ms: u64, cache_hits: Option<usize>, cache_misses: Option<usize>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn disable(&self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     pub fn output_mode(&self) -> OutputMode {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProgressHandle` is never constructed
[INFO] [stdout]    --> src/output.rs:234:12
[INFO] [stdout]     |
[INFO] [stdout] 234 | pub struct ProgressHandle {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/output.rs:246:12
[INFO] [stdout]     |
[INFO] [stdout] 244 | impl ProgressHandle {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] 245 |     /// Report a target being built
[INFO] [stdout] 246 |     pub fn building(&self, target: &str, command: Option<&str>) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 280 |     pub fn finished(&self, target: &str, success: bool, error: Option<&str>) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 314 |     pub fn cache_hit(&self, target: &str) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 342 |     pub fn error(&self, target: &str, message: &str) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 363 |     pub fn increment(&self) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 368 |     pub fn current(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 373 |     pub fn output_mode(&self) -> OutputMode {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_duration` is never used
[INFO] [stdout]    --> src/output.rs:379:8
[INFO] [stdout]     |
[INFO] [stdout] 379 | pub fn format_duration(ms: u64) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse` is never used
[INFO] [stdout]   --> src/parser/mod.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn parse(content: &str) -> Result<Manifest, ParseError> {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `content` and `continued_line` are never read
[INFO] [stdout]  --> src/parser/lexer.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct Lexer<'a> {
[INFO] [stdout]   |            ----- fields in this struct
[INFO] [stdout] 3 |     content: &'a str,
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 7 |     continued_line: Option<String>,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]   --> src/parser/manifest.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct Rule {
[INFO] [stdout]    |            ---- field in this struct
[INFO] [stdout] 25 |     pub name: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Rule` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]   --> src/parser/manifest.rs:89:9
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub struct Pool {
[INFO] [stdout]    |            ---- field in this struct
[INFO] [stdout] 89 |     pub name: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Pool` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ServerStats` is never constructed
[INFO] [stdout]   --> src/server/mod.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct ServerStats {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `record_request` is never used
[INFO] [stdout]   --> src/server/mod.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl ServerStats {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] 33 |     pub fn record_request(&self, success: bool, bytes_in: usize, bytes_out: usize) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_server` is never used
[INFO] [stdout]   --> src/server/mod.rs:48:14
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub async fn run_server(config: ServerConfig) -> Result<(), ExecError> {
[INFO] [stdout]    |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenValidator` is never constructed
[INFO] [stdout]  --> src/server/auth.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct TokenValidator {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `validate`, `is_required`, and `token_count` are never used
[INFO] [stdout]   --> src/server/auth.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl TokenValidator {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 16 |     /// Create a new token validator from config
[INFO] [stdout] 17 |     pub fn new(config: &AuthConfig) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn validate(&self, auth: &AuthHeader) -> AuthResult {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn is_required(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn token_count(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AuthResult` is never used
[INFO] [stdout]   --> src/server/auth.rs:54:10
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub enum AuthResult {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_allowed` is never used
[INFO] [stdout]   --> src/server/auth.rs:64:12
[INFO] [stdout]    |
[INFO] [stdout] 63 | impl AuthResult {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] 64 |     pub fn is_allowed(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ServerConfig` is never constructed
[INFO] [stdout]  --> src/server/config.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct ServerConfig {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_file`, `from_env`, and `entry_ttl` are never used
[INFO] [stdout]   --> src/server/config.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | impl ServerConfig {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 54 |     /// Load configuration from a TOML file
[INFO] [stdout] 55 |     pub fn from_file(path: &std::path::Path) -> Result<Self, Box<dyn std::error::Error>> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn from_env() -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93 |     pub fn entry_ttl(&self) -> Option<Duration> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AuthConfig` is never constructed
[INFO] [stdout]    --> src/server/config.rs:100:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub struct AuthConfig {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_listen_addr` is never used
[INFO] [stdout]    --> src/server/config.rs:110:4
[INFO] [stdout]     |
[INFO] [stdout] 110 | fn default_listen_addr() -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_storage_dir` is never used
[INFO] [stdout]    --> src/server/config.rs:114:4
[INFO] [stdout]     |
[INFO] [stdout] 114 | fn default_storage_dir() -> PathBuf {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_max_connections` is never used
[INFO] [stdout]    --> src/server/config.rs:127:4
[INFO] [stdout]     |
[INFO] [stdout] 127 | fn default_max_connections() -> usize {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_require_auth` is never used
[INFO] [stdout]    --> src/server/config.rs:131:4
[INFO] [stdout]     |
[INFO] [stdout] 131 | fn default_require_auth() -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_size` is never used
[INFO] [stdout]    --> src/server/config.rs:136:4
[INFO] [stdout]     |
[INFO] [stdout] 136 | fn parse_size(s: &str) -> Result<u64, ()> {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CacheServer` is never constructed
[INFO] [stdout]   --> src/server/handler.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct CacheServer {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/server/handler.rs:33:12
[INFO] [stdout]     |
[INFO] [stdout]  31 | impl CacheServer {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  32 |     /// Create a new cache server
[INFO] [stdout]  33 |     pub fn new(config: ServerConfig) -> Result<Self, ExecError> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  74 |     pub async fn run(&self) -> Result<(), ExecError> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     async fn handle_request(&self, data: &[u8]) -> Response {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     fn handle_ping(&self) -> Response {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     fn handle_stats(&self) -> Response {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 203 |     fn handle_exists(&self, keys: &[String]) -> Response {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 212 |     fn handle_lookup(&self, key: &str) -> Response {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 248 |     fn handle_push_entry(&self, key: &str, wire_entry: WireCacheEntry) -> Response {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 282 |     fn handle_push_blob(&self, hash: &str, data: &[u8], offset: u64, total: u64) -> Response {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 311 |     fn handle_push_blob_complete(&self, hash: &str, _checksum: &str) -> Response {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 323 |     fn handle_pull_blobs(&self, hashes: &[String]) -> Response {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 334 |     fn blob_path(&self, hash: &str) -> PathBuf {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `start_timestamp` is never read
[INFO] [stdout]   --> src/trace.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct BuildTrace {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 39 |     start_timestamp: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/trace.rs:72:12
[INFO] [stdout]     |
[INFO] [stdout]  44 | impl BuildTrace {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  72 |     pub fn begin_target(&self, target: &str, command: Option<&str>, tid: u32) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn end_target(&self, target: &str, tid: u32, cache_hit: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn instant(&self, name: &str, category: &str, tid: u32) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub fn total_duration_us(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 254 |     pub fn critical_path(&self) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub fn slow_targets(&self, threshold_ms: u64) -> Vec<(String, u64)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 289 |     pub fn stats(&self) -> TraceStats {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TraceStats` is never constructed
[INFO] [stdout]    --> src/trace.rs:336:12
[INFO] [stdout]     |
[INFO] [stdout] 336 | pub struct TraceStats {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `parallelism` and `summary` are never used
[INFO] [stdout]    --> src/trace.rs:347:12
[INFO] [stdout]     |
[INFO] [stdout] 345 | impl TraceStats {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 346 |     /// Calculate parallelism (total CPU time / wall time)
[INFO] [stdout] 347 |     pub fn parallelism(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 356 |     pub fn summary(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 43.49s
[INFO] running `Command { std: "docker" "inspect" "fad4486406af6908316045675107a8c362f17c1ec3b4f5f91ad6adf018a78203", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "fad4486406af6908316045675107a8c362f17c1ec3b4f5f91ad6adf018a78203", kill_on_drop: false }`
[INFO] [stdout] fad4486406af6908316045675107a8c362f17c1ec3b4f5f91ad6adf018a78203
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] afaea1b043d0d4b15c7e8c1b823db2b60be610c951233d41f7958f03e1c1da3c
[INFO] running `Command { std: "docker" "start" "-a" "afaea1b043d0d4b15c7e8c1b823db2b60be610c951233d41f7958f03e1c1da3c", kill_on_drop: false }`
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling regex-syntax v0.8.8
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]    Compiling predicates-core v1.0.9
[INFO] [stderr]    Compiling float-cmp v0.10.0
[INFO] [stderr]    Compiling normalize-line-endings v0.3.0
[INFO] [stderr]    Compiling termtree v0.5.1
[INFO] [stderr]    Compiling difflib v0.4.0
[INFO] [stderr]    Compiling assert_cmd v2.1.1
[INFO] [stderr]    Compiling wait-timeout v0.2.1
[INFO] [stderr]    Compiling fastrand v2.3.0
[INFO] [stderr]    Compiling predicates-tree v1.0.12
[INFO] [stderr]    Compiling which v7.0.3
[INFO] [stderr]    Compiling tempfile v3.23.0
[INFO] [stderr]    Compiling regex-automata v0.4.13
[INFO] [stderr]    Compiling regex v1.12.2
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling bstr v1.12.1
[INFO] [stderr]    Compiling tracing-subscriber v0.3.22
[INFO] [stderr]    Compiling predicates v3.1.3
[INFO] [stderr]    Compiling rninja v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/admin/cache_stats.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::os::unix::fs::PermissionsExt`
[INFO] [stdout]   --> src/cache/blob.rs:64:17
[INFO] [stdout]    |
[INFO] [stdout] 64 |             use std::os::unix::fs::PermissionsExt;
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PROTOCOL_VERSION`
[INFO] [stdout]  --> src/cache/remote/client.rs:8:25
[INFO] [stdout]   |
[INFO] [stdout] 8 |     DEFAULT_CHUNK_SIZE, PROTOCOL_VERSION,
[INFO] [stdout]   |                         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PathBuf`
[INFO] [stdout]   --> src/cache/mod.rs:16:23
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::path::{Path, PathBuf};
[INFO] [stdout]    |                       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/cache/mod.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Instant`
[INFO] [stdout]   --> src/cache/mod.rs:18:27
[INFO] [stdout]    |
[INFO] [stdout] 18 | use std::time::{Duration, Instant, SystemTime};
[INFO] [stdout]    |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/daemon/watcher.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `nng::options::Options`
[INFO] [stdout]   --> src/server/handler.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use nng::options::Options;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `parking_lot::RwLock`
[INFO] [stdout]   --> src/server/handler.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use parking_lot::RwLock;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AtomicU64`
[INFO] [stdout]   --> src/server/handler.rs:16:25
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::sync::atomic::{AtomicU64, Ordering};
[INFO] [stdout]    |                         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AtomicBool`
[INFO] [stdout]   --> src/server/mod.rs:14:25
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::sync::atomic::{AtomicBool, AtomicU64, Ordering};
[INFO] [stdout]    |                         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/server/mod.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Instant`
[INFO] [stdout]   --> src/server/mod.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::time::Instant;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/admin/cache_stats.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::os::unix::fs::PermissionsExt`
[INFO] [stdout]   --> src/cache/blob.rs:64:17
[INFO] [stdout]    |
[INFO] [stdout] 64 |             use std::os::unix::fs::PermissionsExt;
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PROTOCOL_VERSION`
[INFO] [stdout]  --> src/cache/remote/client.rs:8:25
[INFO] [stdout]   |
[INFO] [stdout] 8 |     DEFAULT_CHUNK_SIZE, PROTOCOL_VERSION,
[INFO] [stdout]   |                         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PathBuf`
[INFO] [stdout]   --> src/cache/mod.rs:16:23
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::path::{Path, PathBuf};
[INFO] [stdout]    |                       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/cache/mod.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Instant`
[INFO] [stdout]   --> src/cache/mod.rs:18:27
[INFO] [stdout]    |
[INFO] [stdout] 18 | use std::time::{Duration, Instant, SystemTime};
[INFO] [stdout]    |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/daemon/watcher.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `nng::options::Options`
[INFO] [stdout]   --> src/server/handler.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use nng::options::Options;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `parking_lot::RwLock`
[INFO] [stdout]   --> src/server/handler.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use parking_lot::RwLock;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AtomicU64`
[INFO] [stdout]   --> src/server/handler.rs:16:25
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::sync::atomic::{AtomicU64, Ordering};
[INFO] [stdout]    |                         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AtomicBool`
[INFO] [stdout]   --> src/server/mod.rs:14:25
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::sync::atomic::{AtomicBool, AtomicU64, Ordering};
[INFO] [stdout]    |                         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/server/mod.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Instant`
[INFO] [stdout]   --> src/server/mod.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::time::Instant;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `verbose`
[INFO] [stdout]   --> src/admin/cache_health.rs:41:25
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub fn run_cache_health(verbose: bool, json: bool) -> Result<HealthReport, ExecError> {
[INFO] [stdout]    |                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_verbose`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `verbose`
[INFO] [stdout]   --> src/admin/cache_stats.rs:43:24
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub fn run_cache_stats(verbose: bool, json: bool) -> Result<(), ExecError> {
[INFO] [stdout]    |                        ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_verbose`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `blob_store`
[INFO] [stdout]    --> src/cache/remote/client.rs:370:9
[INFO] [stdout]     |
[INFO] [stdout] 370 |         blob_store: &BlobStore,
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_blob_store`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `db`
[INFO] [stdout]    --> src/cache/schema.rs:151:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | fn migrate(db: &sled::Db, from_version: u32) -> Result<MigrationStats, ExecError> {
[INFO] [stdout]     |            ^^ help: if this is intentional, prefix it with an underscore: `_db`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from_version`
[INFO] [stdout]    --> src/cache/schema.rs:151:27
[INFO] [stdout]     |
[INFO] [stdout] 151 | fn migrate(db: &sled::Db, from_version: u32) -> Result<MigrationStats, ExecError> {
[INFO] [stdout]     |                           ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_from_version`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `now`
[INFO] [stdout]    --> src/cache/mod.rs:421:13
[INFO] [stdout]     |
[INFO] [stdout] 421 |         let now = SystemTime::now();
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_now`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `verbose`
[INFO] [stdout]   --> src/admin/cache_health.rs:41:25
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub fn run_cache_health(verbose: bool, json: bool) -> Result<HealthReport, ExecError> {
[INFO] [stdout]    |                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_verbose`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `verbose`
[INFO] [stdout]   --> src/admin/cache_stats.rs:43:24
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub fn run_cache_stats(verbose: bool, json: bool) -> Result<(), ExecError> {
[INFO] [stdout]    |                        ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_verbose`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `blob_store`
[INFO] [stdout]    --> src/cache/remote/client.rs:370:9
[INFO] [stdout]     |
[INFO] [stdout] 370 |         blob_store: &BlobStore,
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_blob_store`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `db`
[INFO] [stdout]    --> src/cache/schema.rs:151:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | fn migrate(db: &sled::Db, from_version: u32) -> Result<MigrationStats, ExecError> {
[INFO] [stdout]     |            ^^ help: if this is intentional, prefix it with an underscore: `_db`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from_version`
[INFO] [stdout]    --> src/cache/schema.rs:151:27
[INFO] [stdout]     |
[INFO] [stdout] 151 | fn migrate(db: &sled::Db, from_version: u32) -> Result<MigrationStats, ExecError> {
[INFO] [stdout]     |                           ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_from_version`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `now`
[INFO] [stdout]    --> src/cache/mod.rs:421:13
[INFO] [stdout]     |
[INFO] [stdout] 421 |         let now = SystemTime::now();
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_now`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hash_bytes` is never used
[INFO] [stdout]   --> src/cache/hasher.rs:76:8
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub fn hash_bytes(data: &[u8]) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `socket` is never read
[INFO] [stdout]   --> src/client/connection.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct DaemonClient {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] 26 |     socket_path: PathBuf,
[INFO] [stdout] 27 |     socket: Option<nng::Socket>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `event_tx` is never read
[INFO] [stdout]   --> src/daemon/watcher.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct FileWatcher {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 39 |     event_tx: Sender<WatchEvent>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `trace_begin` is never used
[INFO] [stdout]    --> src/executor/mod.rs:202:8
[INFO] [stdout]     |
[INFO] [stdout] 128 | impl BuildState {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 202 |     fn trace_begin(&self, target: &str, command: Option<&str>, tid: u32) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_command` is never used
[INFO] [stdout]  --> src/executor/runner.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn run_command(cmd: &str) -> io::Result<Output> {
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_command_streaming` is never used
[INFO] [stdout]   --> src/executor/runner.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub fn run_command_streaming(cmd: &str) -> io::Result<i32> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `command_exists` is never used
[INFO] [stdout]   --> src/executor/runner.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub fn command_exists(name: &str) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rules` is never read
[INFO] [stdout]   --> src/graph/mod.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct Graph {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 25 |     rules: HashMap<String, Rule>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Graph` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `is_tty` is never read
[INFO] [stdout]    --> src/output.rs:238:5
[INFO] [stdout]     |
[INFO] [stdout] 234 | pub struct ProgressHandle {
[INFO] [stdout]     |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 238 |     is_tty: bool,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ProgressHandle` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `content` and `continued_line` are never read
[INFO] [stdout]  --> src/parser/lexer.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct Lexer<'a> {
[INFO] [stdout]   |            ----- fields in this struct
[INFO] [stdout] 3 |     content: &'a str,
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 7 |     continued_line: Option<String>,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `blobs` is never read
[INFO] [stdout]   --> src/server/handler.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct CacheServer {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 25 |     blobs: BlobStore,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `start_timestamp` is never read
[INFO] [stdout]   --> src/trace.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct BuildTrace {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 39 |     start_timestamp: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hash_bytes` is never used
[INFO] [stdout]   --> src/cache/hasher.rs:76:8
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub fn hash_bytes(data: &[u8]) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `socket` is never read
[INFO] [stdout]   --> src/client/connection.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct DaemonClient {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] 26 |     socket_path: PathBuf,
[INFO] [stdout] 27 |     socket: Option<nng::Socket>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `event_tx` is never read
[INFO] [stdout]   --> src/daemon/watcher.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct FileWatcher {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 39 |     event_tx: Sender<WatchEvent>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `trace_begin` is never used
[INFO] [stdout]    --> src/executor/mod.rs:202:8
[INFO] [stdout]     |
[INFO] [stdout] 128 | impl BuildState {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 202 |     fn trace_begin(&self, target: &str, command: Option<&str>, tid: u32) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_command` is never used
[INFO] [stdout]  --> src/executor/runner.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn run_command(cmd: &str) -> io::Result<Output> {
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_command_streaming` is never used
[INFO] [stdout]   --> src/executor/runner.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub fn run_command_streaming(cmd: &str) -> io::Result<i32> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `command_exists` is never used
[INFO] [stdout]   --> src/executor/runner.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub fn command_exists(name: &str) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rules` is never read
[INFO] [stdout]   --> src/graph/mod.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct Graph {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 25 |     rules: HashMap<String, Rule>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Graph` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `is_tty` is never read
[INFO] [stdout]    --> src/output.rs:238:5
[INFO] [stdout]     |
[INFO] [stdout] 234 | pub struct ProgressHandle {
[INFO] [stdout]     |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 238 |     is_tty: bool,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ProgressHandle` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `content` and `continued_line` are never read
[INFO] [stdout]  --> src/parser/lexer.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct Lexer<'a> {
[INFO] [stdout]   |            ----- fields in this struct
[INFO] [stdout] 3 |     content: &'a str,
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 7 |     continued_line: Option<String>,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `blobs` is never read
[INFO] [stdout]   --> src/server/handler.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct CacheServer {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 25 |     blobs: BlobStore,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `start_timestamp` is never read
[INFO] [stdout]   --> src/trace.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct BuildTrace {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 39 |     start_timestamp: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/admin/cache_stats.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `GcReport`
[INFO] [stdout]  --> src/admin/mod.rs:9:45
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use cache_gc::{run_cache_gc, GcOptions, GcReport};
[INFO] [stdout]   |                                             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HealthCheck`, `HealthReport`, and `HealthStatus`
[INFO] [stdout]   --> src/admin/mod.rs:10:42
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use cache_health::{run_cache_health, HealthCheck, HealthReport, HealthStatus};
[INFO] [stdout]    |                                          ^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CacheStatsReport`
[INFO] [stdout]   --> src/admin/mod.rs:11:40
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use cache_stats::{run_cache_stats, CacheStatsReport};
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::os::unix::fs::PermissionsExt`
[INFO] [stdout]   --> src/cache/blob.rs:64:17
[INFO] [stdout]    |
[INFO] [stdout] 64 |             use std::os::unix::fs::PermissionsExt;
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PROTOCOL_VERSION`
[INFO] [stdout]  --> src/cache/remote/client.rs:8:25
[INFO] [stdout]   |
[INFO] [stdout] 8 |     DEFAULT_CHUNK_SIZE, PROTOCOL_VERSION,
[INFO] [stdout]   |                         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ClientStats`
[INFO] [stdout]  --> src/cache/remote/mod.rs:9:18
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use client::{ClientStats, RemoteCacheClient, RemoteClientConfig, RetryConfig};
[INFO] [stdout]   |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ErrorCode`, `PROTOCOL_VERSION`, `RequestEnvelope`, `Request`, and `Response`
[INFO] [stdout]   --> src/cache/remote/mod.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     ErrorCode, Request, RequestEnvelope, Response, WireCacheEntry, PROTOCOL_VERSION,
[INFO] [stdout]    |     ^^^^^^^^^  ^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CURRENT_SCHEMA_VERSION`, `SchemaInfo`, and `check_and_migrate`
[INFO] [stdout]  --> src/cache/mod.rs:9:18
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use schema::{check_and_migrate, SchemaInfo, CURRENT_SCHEMA_VERSION};
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RemoteCacheConfig`
[INFO] [stdout]   --> src/cache/mod.rs:10:66
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use config::{CacheConfig, CacheMode, PullPolicy, PushPolicy, RemoteCacheConfig};
[INFO] [stdout]    |                                                                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PathBuf`
[INFO] [stdout]   --> src/cache/mod.rs:16:23
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::path::{Path, PathBuf};
[INFO] [stdout]    |                       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/cache/mod.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Instant`
[INFO] [stdout]   --> src/cache/mod.rs:18:27
[INFO] [stdout]    |
[INFO] [stdout] 18 | use std::time::{Duration, Instant, SystemTime};
[INFO] [stdout]    |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `nng::options::Options`
[INFO] [stdout]   --> src/server/handler.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use nng::options::Options;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `parking_lot::RwLock`
[INFO] [stdout]   --> src/server/handler.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use parking_lot::RwLock;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AtomicU64`
[INFO] [stdout]   --> src/server/handler.rs:16:25
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::sync::atomic::{AtomicU64, Ordering};
[INFO] [stdout]    |                         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AtomicBool`
[INFO] [stdout]   --> src/server/mod.rs:14:25
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::sync::atomic::{AtomicBool, AtomicU64, Ordering};
[INFO] [stdout]    |                         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/server/mod.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Instant`
[INFO] [stdout]   --> src/server/mod.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::time::Instant;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `verbose`
[INFO] [stdout]   --> src/admin/cache_health.rs:41:25
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub fn run_cache_health(verbose: bool, json: bool) -> Result<HealthReport, ExecError> {
[INFO] [stdout]    |                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_verbose`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `verbose`
[INFO] [stdout]   --> src/admin/cache_stats.rs:43:24
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub fn run_cache_stats(verbose: bool, json: bool) -> Result<(), ExecError> {
[INFO] [stdout]    |                        ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_verbose`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `blob_store`
[INFO] [stdout]    --> src/cache/remote/client.rs:370:9
[INFO] [stdout]     |
[INFO] [stdout] 370 |         blob_store: &BlobStore,
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_blob_store`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `db`
[INFO] [stdout]    --> src/cache/schema.rs:151:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | fn migrate(db: &sled::Db, from_version: u32) -> Result<MigrationStats, ExecError> {
[INFO] [stdout]     |            ^^ help: if this is intentional, prefix it with an underscore: `_db`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from_version`
[INFO] [stdout]    --> src/cache/schema.rs:151:27
[INFO] [stdout]     |
[INFO] [stdout] 151 | fn migrate(db: &sled::Db, from_version: u32) -> Result<MigrationStats, ExecError> {
[INFO] [stdout]     |                           ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_from_version`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `now`
[INFO] [stdout]    --> src/cache/mod.rs:421:13
[INFO] [stdout]     |
[INFO] [stdout] 421 |         let now = SystemTime::now();
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_now`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_mtime` and `needs_rebuild` are never used
[INFO] [stdout]    --> src/buildlog.rs:112:12
[INFO] [stdout]     |
[INFO] [stdout]  33 | impl BuildLog {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn get_mtime(&self, output: &str) -> Option<u64> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn needs_rebuild(&self, output: &str, command_hash: u64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `invalidate`, `prefetch`, `prefetch_parallel`, and `insert` are never used
[INFO] [stdout]    --> src/buildlog.rs:208:12
[INFO] [stdout]     |
[INFO] [stdout] 189 | impl MtimeCache {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn invalidate(&mut self, path: &Path) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub fn prefetch(&mut self, paths: &[&Path]) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn prefetch_parallel(&mut self, paths: &[PathBuf]) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub fn insert(&mut self, path: PathBuf, mtime: Option<u64>) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `remote_hits`, `remote_misses`, `remote_errors`, and `remote_timeouts` are never read
[INFO] [stdout]   --> src/cache/mod.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct CacheStats {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub remote_hits: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 30 |     pub remote_misses: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 31 |     pub remote_errors: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 32 |     pub remote_timeouts: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CacheStats` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `hit_rate`, `total_hits`, `total_misses`, and `combined_hit_rate` are never used
[INFO] [stdout]   --> src/cache/mod.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 35 | impl CacheStats {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] 36 |     pub fn hit_rate(&self) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn total_hits(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn total_misses(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn combined_hit_rate(&self) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `remote` is never read
[INFO] [stdout]   --> src/cache/mod.rs:74:5
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub struct Cache {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 74 |     remote: Option<RemoteCacheClient>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/cache/mod.rs:149:12
[INFO] [stdout]     |
[INFO] [stdout]  77 | impl Cache {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn mode(&self) -> CacheMode {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub fn has_remote(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub async fn connect_remote(&self) -> Result<(), RemoteCacheError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub async fn lookup_async(&self, key: &str) -> Option<CacheEntry> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     async fn lookup_remote(&self, key: &str) -> Option<CacheEntry> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 351 |     pub async fn store_async(
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 391 |     fn should_push(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 403 |     pub fn restore(&self, entry: &CacheEntry) -> Result<bool, ExecError> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 414 |     pub fn stats(&self) -> CacheStats {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 419 |     pub fn gc(&self) -> Result<GcStats, ExecError> {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 467 |     pub fn is_enabled(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GcStats` is never constructed
[INFO] [stdout]    --> src/cache/mod.rs:474:12
[INFO] [stdout]     |
[INFO] [stdout] 474 | pub struct GcStats {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `gc` and `total_size` are never used
[INFO] [stdout]    --> src/cache/blob.rs:133:12
[INFO] [stdout]     |
[INFO] [stdout]  14 | impl BlobStore {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub fn gc(&self) -> Result<BlobGcStats, ExecError> {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     pub fn total_size(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BlobGcStats` is never constructed
[INFO] [stdout]    --> src/cache/blob.rs:179:12
[INFO] [stdout]     |
[INFO] [stdout] 179 | pub struct BlobGcStats {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `auto_migrate` is never read
[INFO] [stdout]    --> src/cache/config.rs:183:9
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub struct CacheConfig {
[INFO] [stdout]     |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 183 |     pub auto_migrate: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `CacheConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `disabled` is never used
[INFO] [stdout]    --> src/cache/config.rs:249:12
[INFO] [stdout]     |
[INFO] [stdout] 200 | impl CacheConfig {
[INFO] [stdout]     | ---------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub fn disabled() -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hash_bytes` is never used
[INFO] [stdout]   --> src/cache/hasher.rs:76:8
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub fn hash_bytes(data: &[u8]) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `client_id`, `connect_timeout`, `request_timeout`, `chunk_size`, and `retry` are never read
[INFO] [stdout]   --> src/cache/remote/client.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct RemoteClientConfig {
[INFO] [stdout]    |            ------------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub client_id: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 30 |     /// Connection timeout
[INFO] [stdout] 31 |     pub connect_timeout: Duration,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 32 |     /// Request timeout
[INFO] [stdout] 33 |     pub request_timeout: Duration,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub chunk_size: usize,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 38 |     /// Retry configuration
[INFO] [stdout] 39 |     pub retry: RetryConfig,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RemoteClientConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `max_retries`, `initial_backoff`, and `max_backoff` are never read
[INFO] [stdout]   --> src/cache/remote/client.rs:61:9
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct RetryConfig {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 60 |     /// Maximum number of retry attempts
[INFO] [stdout] 61 |     pub max_retries: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 62 |     /// Initial backoff duration
[INFO] [stdout] 63 |     pub initial_backoff: Duration,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 64 |     /// Maximum backoff duration
[INFO] [stdout] 65 |     pub max_backoff: Duration,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RetryConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `requests_failed` and `retries` are never read
[INFO] [stdout]   --> src/cache/remote/client.rs:82:9
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub struct ClientStats {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 81 |     pub requests_sent: AtomicU64,
[INFO] [stdout] 82 |     pub requests_failed: AtomicU64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 87 |     pub retries: AtomicU64,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ClientStats` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `record_failure` and `record_retry` are never used
[INFO] [stdout]    --> src/cache/remote/client.rs:118:12
[INFO] [stdout]     |
[INFO] [stdout]  93 | impl ClientStats {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn record_failure(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn record_retry(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `config`, `semaphore`, and `stats` are never read
[INFO] [stdout]    --> src/cache/remote/client.rs:129:5
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub struct RemoteCacheClient {
[INFO] [stdout]     |            ----------------- fields in this struct
[INFO] [stdout] 129 |     config: RemoteClientConfig,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 130 |     socket: RwLock<Option<nng::Socket>>,
[INFO] [stdout] 131 |     semaphore: Arc<Semaphore>,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 132 |     stats: Arc<ClientStats>,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/cache/remote/client.rs:163:18
[INFO] [stdout]     |
[INFO] [stdout] 136 | impl RemoteCacheClient {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub async fn connect(&self) -> Result<(), RemoteCacheError> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub fn is_connected(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     pub fn stats(&self) -> &ClientStats {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 229 |     async fn send_request(&self, request: Request) -> Result<Response, RemoteCacheError> {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 286 |     async fn send_with_retry(&self, request: Request) -> Result<Response, RemoteCacheError> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub async fn ping(&self) -> Result<String, RemoteCacheError> {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 330 |     pub async fn exists(&self, keys: &[&str]) -> Result<HashMap<String, bool>, RemoteCacheError> {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 345 |     pub async fn lookup(&self, key: &str) -> Result<Option<WireCacheEntry>, RemoteCacheError> {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |     pub async fn pull_blobs(
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 398 |     pub async fn push_entry(
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 418 |     pub async fn push_blob(&self, hash: &str, data: &[u8]) -> Result<(), RemoteCacheError> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 454 |     pub async fn push_blob_from_file(&self, path: &Path) -> Result<String, RemoteCacheError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 466 |     pub async fn server_stats(&self) -> Result<(u64, u64, u64, u64), RemoteCacheError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ConnectionFailed`, `ServerError`, `InvalidResponse`, `BlobTransferFailed`, and `ChecksumMismatch` are never constructed
[INFO] [stdout]   --> src/cache/remote/error.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub enum RemoteCacheError {
[INFO] [stdout]    |          ---------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 11 |     ConnectionFailed(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     ServerError { code: ErrorCode, message: String },
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     InvalidResponse(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     BlobTransferFailed(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     ChecksumMismatch {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RemoteCacheError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_entry`, `to_outputs`, and `created_time` are never used
[INFO] [stdout]   --> src/cache/remote/protocol.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 59 | impl WireCacheEntry {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 60 |     pub fn from_entry(command: &str, outputs: &[(PathBuf, String)], created: SystemTime) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn to_outputs(&self) -> Vec<(PathBuf, String)> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 83 |     pub fn created_time(&self) -> SystemTime {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_error` is never used
[INFO] [stdout]    --> src/cache/remote/protocol.rs:194:12
[INFO] [stdout]     |
[INFO] [stdout] 186 | impl Response {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 194 |     pub fn is_error(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SCHEMA_KEY` is never used
[INFO] [stdout]   --> src/cache/schema.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const SCHEMA_KEY: &[u8] = b"__rninja_schema__";
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MigrationStats` is never constructed
[INFO] [stdout]   --> src/cache/schema.rs:67:12
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub struct MigrationStats {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_and_migrate` is never used
[INFO] [stdout]   --> src/cache/schema.rs:75:8
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub fn check_and_migrate(db: &sled::Db, auto_migrate: bool) -> Result<SchemaInfo, ExecError> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `migrate` is never used
[INFO] [stdout]    --> src/cache/schema.rs:151:4
[INFO] [stdout]     |
[INFO] [stdout] 151 | fn migrate(db: &sled::Db, from_version: u32) -> Result<MigrationStats, ExecError> {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `keep_depfile` is never used
[INFO] [stdout]   --> src/cli.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 68 | impl Cli {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn keep_depfile(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `default_config_path` is never used
[INFO] [stdout]    --> src/config.rs:155:12
[INFO] [stdout]     |
[INFO] [stdout] 102 | impl Config {
[INFO] [stdout]     | ----------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn default_config_path() -> Option<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `UnknownRule` and `MissingVariable` are never constructed
[INFO] [stdout]   --> src/error.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum ParseError {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout]  9 |     UnknownRule { name: String },
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 15 |     MissingVariable { var: String, rule: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ParseError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `trace_begin` is never used
[INFO] [stdout]    --> src/executor/mod.rs:202:8
[INFO] [stdout]     |
[INFO] [stdout] 128 | impl BuildState {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 202 |     fn trace_begin(&self, target: &str, command: Option<&str>, tid: u32) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_command` is never used
[INFO] [stdout]  --> src/executor/runner.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn run_command(cmd: &str) -> io::Result<Output> {
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_command_streaming` is never used
[INFO] [stdout]   --> src/executor/runner.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub fn run_command_streaming(cmd: &str) -> io::Result<i32> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `command_exists` is never used
[INFO] [stdout]   --> src/executor/runner.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub fn command_exists(name: &str) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rules` is never read
[INFO] [stdout]   --> src/graph/mod.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct Graph {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 25 |     rules: HashMap<String, Rule>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Graph` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `nodes` is never used
[INFO] [stdout]    --> src/graph/mod.rs:120:12
[INFO] [stdout]     |
[INFO] [stdout]  32 | impl Graph {
[INFO] [stdout]     | ---------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn nodes(&self) -> impl Iterator<Item = &Node> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `rule`, `restat`, and `generator` are never read
[INFO] [stdout]   --> src/graph/node.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout]  3 | pub struct Node {
[INFO] [stdout]    |            ---- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 15 |     pub rule: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub restat: bool,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub generator: bool,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Node` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `display` is never used
[INFO] [stdout]   --> src/graph/node.rs:72:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl Node {
[INFO] [stdout]    | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 72 |     pub fn display(&self) -> &str {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BuildMetrics` is never constructed
[INFO] [stdout]   --> src/metrics/mod.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct BuildMetrics {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/metrics/mod.rs:40:12
[INFO] [stdout]     |
[INFO] [stdout]  39 | impl BuildMetrics {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout]  40 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  44 |     pub fn record_target_built(&self, exec_time: Duration) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub fn record_target_skipped(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  54 |     pub fn record_target_failed(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  58 |     pub fn record_cache_hit(&self, lookup_time: Duration) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub fn record_cache_miss(&self, lookup_time: Duration) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn record_cache_store(&self, store_time: Duration) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn record_queue_depth(&self, depth: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn set_total_targets(&self, count: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn set_build_time(&self, duration: Duration) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn cache_hit_rate(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn snapshot(&self) -> MetricsSnapshot {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `cache_store_time_us` is never read
[INFO] [stdout]    --> src/metrics/mod.rs:140:9
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub struct MetricsSnapshot {
[INFO] [stdout]     |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub cache_store_time_us: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `MetricsSnapshot` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_json` is never used
[INFO] [stdout]    --> src/metrics/mod.rs:154:12
[INFO] [stdout]     |
[INFO] [stdout] 144 | impl MetricsSnapshot {
[INFO] [stdout]     | -------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub fn to_json(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Error` is never constructed
[INFO] [stdout]   --> src/output.rs:70:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub enum JsonEvent<'a> {
[INFO] [stdout]    |          --------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 70 |     Error {
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `JsonEvent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Styles` is never constructed
[INFO] [stdout]   --> src/output.rs:88:12
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub struct Styles {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProgressReporter` is never constructed
[INFO] [stdout]    --> src/output.rs:111:12
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub struct ProgressReporter {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/output.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 123 | impl ProgressReporter {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 124 |     pub fn new(total: usize, verbose: bool) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn with_mode(total: usize, verbose: bool, output_mode: OutputMode, parallelism: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub fn handle(&self) -> ProgressHandle {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn start(&self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 174 |     pub fn finish(&self, success: bool, duration_ms: u64) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn finish_with_cache(&self, success: bool, duration_ms: u64, cache_hits: Option<usize>, cache_misses: Option<usize>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn disable(&self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     pub fn output_mode(&self) -> OutputMode {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProgressHandle` is never constructed
[INFO] [stdout]    --> src/output.rs:234:12
[INFO] [stdout]     |
[INFO] [stdout] 234 | pub struct ProgressHandle {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/output.rs:246:12
[INFO] [stdout]     |
[INFO] [stdout] 244 | impl ProgressHandle {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] 245 |     /// Report a target being built
[INFO] [stdout] 246 |     pub fn building(&self, target: &str, command: Option<&str>) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 280 |     pub fn finished(&self, target: &str, success: bool, error: Option<&str>) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 314 |     pub fn cache_hit(&self, target: &str) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 342 |     pub fn error(&self, target: &str, message: &str) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 363 |     pub fn increment(&self) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 368 |     pub fn current(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 373 |     pub fn output_mode(&self) -> OutputMode {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `content` and `continued_line` are never read
[INFO] [stdout]  --> src/parser/lexer.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct Lexer<'a> {
[INFO] [stdout]   |            ----- fields in this struct
[INFO] [stdout] 3 |     content: &'a str,
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 7 |     continued_line: Option<String>,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]   --> src/parser/manifest.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct Rule {
[INFO] [stdout]    |            ---- field in this struct
[INFO] [stdout] 25 |     pub name: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Rule` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]   --> src/parser/manifest.rs:89:9
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub struct Pool {
[INFO] [stdout]    |            ---- field in this struct
[INFO] [stdout] 89 |     pub name: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Pool` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ServerStats` is never constructed
[INFO] [stdout]   --> src/server/mod.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct ServerStats {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `record_request` is never used
[INFO] [stdout]   --> src/server/mod.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl ServerStats {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] 33 |     pub fn record_request(&self, success: bool, bytes_in: usize, bytes_out: usize) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_server` is never used
[INFO] [stdout]   --> src/server/mod.rs:48:14
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub async fn run_server(config: ServerConfig) -> Result<(), ExecError> {
[INFO] [stdout]    |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_required` and `token_count` are never used
[INFO] [stdout]   --> src/server/auth.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl TokenValidator {
[INFO] [stdout]    | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn is_required(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn token_count(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_allowed` is never used
[INFO] [stdout]   --> src/server/auth.rs:64:12
[INFO] [stdout]    |
[INFO] [stdout] 63 | impl AuthResult {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] 64 |     pub fn is_allowed(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `storage_dir`, `max_storage_size`, `workers`, `max_connections`, and `entry_ttl_secs` are never read
[INFO] [stdout]   --> src/server/config.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct ServerConfig {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub storage_dir: PathBuf,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub max_storage_size: Option<u64>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub workers: usize,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub max_connections: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub entry_ttl_secs: Option<u64>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ServerConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_file`, `from_env`, and `entry_ttl` are never used
[INFO] [stdout]   --> src/server/config.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | impl ServerConfig {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 54 |     /// Load configuration from a TOML file
[INFO] [stdout] 55 |     pub fn from_file(path: &std::path::Path) -> Result<Self, Box<dyn std::error::Error>> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn from_env() -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93 |     pub fn entry_ttl(&self) -> Option<Duration> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CacheServer` is never constructed
[INFO] [stdout]   --> src/server/handler.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct CacheServer {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/server/handler.rs:33:12
[INFO] [stdout]     |
[INFO] [stdout]  31 | impl CacheServer {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  32 |     /// Create a new cache server
[INFO] [stdout]  33 |     pub fn new(config: ServerConfig) -> Result<Self, ExecError> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  74 |     pub async fn run(&self) -> Result<(), ExecError> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     async fn handle_request(&self, data: &[u8]) -> Response {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     fn handle_ping(&self) -> Response {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     fn handle_stats(&self) -> Response {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 203 |     fn handle_exists(&self, keys: &[String]) -> Response {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 212 |     fn handle_lookup(&self, key: &str) -> Response {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 248 |     fn handle_push_entry(&self, key: &str, wire_entry: WireCacheEntry) -> Response {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 282 |     fn handle_push_blob(&self, hash: &str, data: &[u8], offset: u64, total: u64) -> Response {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 311 |     fn handle_push_blob_complete(&self, hash: &str, _checksum: &str) -> Response {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 323 |     fn handle_pull_blobs(&self, hashes: &[String]) -> Response {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 334 |     fn blob_path(&self, hash: &str) -> PathBuf {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `start_timestamp` is never read
[INFO] [stdout]   --> src/trace.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct BuildTrace {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 39 |     start_timestamp: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `begin_target`, `end_target`, `instant`, and `critical_path` are never used
[INFO] [stdout]    --> src/trace.rs:72:12
[INFO] [stdout]     |
[INFO] [stdout]  44 | impl BuildTrace {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  72 |     pub fn begin_target(&self, target: &str, command: Option<&str>, tid: u32) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn end_target(&self, target: &str, tid: u32, cache_hit: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn instant(&self, name: &str, category: &str, tid: u32) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 254 |     pub fn critical_path(&self) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `total_time_us`, `avg_time_us`, `max_time_us`, and `wall_time_us` are never read
[INFO] [stdout]    --> src/trace.rs:339:9
[INFO] [stdout]     |
[INFO] [stdout] 336 | pub struct TraceStats {
[INFO] [stdout]     |            ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 339 |     pub total_time_us: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 340 |     pub avg_time_us: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 341 |     pub max_time_us: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 342 |     pub wall_time_us: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TraceStats` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `parallelism` and `summary` are never used
[INFO] [stdout]    --> src/trace.rs:347:12
[INFO] [stdout]     |
[INFO] [stdout] 345 | impl TraceStats {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 346 |     /// Calculate parallelism (total CPU time / wall time)
[INFO] [stdout] 347 |     pub fn parallelism(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 356 |     pub fn summary(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 27.91s
[INFO] running `Command { std: "docker" "inspect" "afaea1b043d0d4b15c7e8c1b823db2b60be610c951233d41f7958f03e1c1da3c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "afaea1b043d0d4b15c7e8c1b823db2b60be610c951233d41f7958f03e1c1da3c", kill_on_drop: false }`
[INFO] [stdout] afaea1b043d0d4b15c7e8c1b823db2b60be610c951233d41f7958f03e1c1da3c
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 64af3d600a58427315255bb01638ba86cdf7195ac93bd3452c5efea00d3fc8a1
[INFO] running `Command { std: "docker" "start" "-a" "64af3d600a58427315255bb01638ba86cdf7195ac93bd3452c5efea00d3fc8a1", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `std::collections::HashMap`
[INFO] [stderr]  --> src/admin/cache_stats.rs:6:5
[INFO] [stderr]   |
[INFO] [stderr] 6 | use std::collections::HashMap;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::os::unix::fs::PermissionsExt`
[INFO] [stderr]   --> src/cache/blob.rs:64:17
[INFO] [stderr]    |
[INFO] [stderr] 64 |             use std::os::unix::fs::PermissionsExt;
[INFO] [stderr]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `PROTOCOL_VERSION`
[INFO] [stderr]  --> src/cache/remote/client.rs:8:25
[INFO] [stderr]   |
[INFO] [stderr] 8 |     DEFAULT_CHUNK_SIZE, PROTOCOL_VERSION,
[INFO] [stderr]   |                         ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `PathBuf`
[INFO] [stderr]   --> src/cache/mod.rs:16:23
[INFO] [stderr]    |
[INFO] [stderr] 16 | use std::path::{Path, PathBuf};
[INFO] [stderr]    |                       ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::sync::Arc`
[INFO] [stderr]   --> src/cache/mod.rs:17:5
[INFO] [stderr]    |
[INFO] [stderr] 17 | use std::sync::Arc;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Instant`
[INFO] [stderr]   --> src/cache/mod.rs:18:27
[INFO] [stderr]    |
[INFO] [stderr] 18 | use std::time::{Duration, Instant, SystemTime};
[INFO] [stderr]    |                           ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::sync::Arc`
[INFO] [stderr]   --> src/daemon/watcher.rs:10:5
[INFO] [stderr]    |
[INFO] [stderr] 10 | use std::sync::Arc;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `nng::options::Options`
[INFO] [stderr]   --> src/server/handler.rs:12:5
[INFO] [stderr]    |
[INFO] [stderr] 12 | use nng::options::Options;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `parking_lot::RwLock`
[INFO] [stderr]   --> src/server/handler.rs:13:5
[INFO] [stderr]    |
[INFO] [stderr] 13 | use parking_lot::RwLock;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `AtomicU64`
[INFO] [stderr]   --> src/server/handler.rs:16:25
[INFO] [stderr]    |
[INFO] [stderr] 16 | use std::sync::atomic::{AtomicU64, Ordering};
[INFO] [stderr]    |                         ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `AtomicBool`
[INFO] [stderr]   --> src/server/mod.rs:14:25
[INFO] [stderr]    |
[INFO] [stderr] 14 | use std::sync::atomic::{AtomicBool, AtomicU64, Ordering};
[INFO] [stderr]    |                         ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::sync::Arc`
[INFO] [stderr]   --> src/server/mod.rs:15:5
[INFO] [stderr]    |
[INFO] [stderr] 15 | use std::sync::Arc;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::time::Instant`
[INFO] [stderr]   --> src/server/mod.rs:16:5
[INFO] [stderr]    |
[INFO] [stderr] 16 | use std::time::Instant;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `verbose`
[INFO] [stderr]   --> src/admin/cache_health.rs:41:25
[INFO] [stderr]    |
[INFO] [stderr] 41 | pub fn run_cache_health(verbose: bool, json: bool) -> Result<HealthReport, ExecError> {
[INFO] [stderr]    |                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_verbose`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `verbose`
[INFO] [stderr]   --> src/admin/cache_stats.rs:43:24
[INFO] [stderr]    |
[INFO] [stderr] 43 | pub fn run_cache_stats(verbose: bool, json: bool) -> Result<(), ExecError> {
[INFO] [stderr]    |                        ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_verbose`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `blob_store`
[INFO] [stderr]    --> src/cache/remote/client.rs:370:9
[INFO] [stderr]     |
[INFO] [stderr] 370 |         blob_store: &BlobStore,
[INFO] [stderr]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_blob_store`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `db`
[INFO] [stderr]    --> src/cache/schema.rs:151:12
[INFO] [stderr]     |
[INFO] [stderr] 151 | fn migrate(db: &sled::Db, from_version: u32) -> Result<MigrationStats, ExecError> {
[INFO] [stderr]     |            ^^ help: if this is intentional, prefix it with an underscore: `_db`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `from_version`
[INFO] [stderr]    --> src/cache/schema.rs:151:27
[INFO] [stderr]     |
[INFO] [stderr] 151 | fn migrate(db: &sled::Db, from_version: u32) -> Result<MigrationStats, ExecError> {
[INFO] [stderr]     |                           ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_from_version`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `now`
[INFO] [stderr]    --> src/cache/mod.rs:421:13
[INFO] [stderr]     |
[INFO] [stderr] 421 |         let now = SystemTime::now();
[INFO] [stderr]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_now`
[INFO] [stderr] 
[INFO] [stderr] warning: function `hash_bytes` is never used
[INFO] [stderr]   --> src/cache/hasher.rs:76:8
[INFO] [stderr]    |
[INFO] [stderr] 76 | pub fn hash_bytes(data: &[u8]) -> String {
[INFO] [stderr]    |        ^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: field `socket` is never read
[INFO] [stderr]   --> src/client/connection.rs:27:5
[INFO] [stderr]    |
[INFO] [stderr] 25 | pub struct DaemonClient {
[INFO] [stderr]    |            ------------ field in this struct
[INFO] [stderr] 26 |     socket_path: PathBuf,
[INFO] [stderr] 27 |     socket: Option<nng::Socket>,
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `event_tx` is never read
[INFO] [stderr]   --> src/daemon/watcher.rs:39:5
[INFO] [stderr]    |
[INFO] [stderr] 28 | pub struct FileWatcher {
[INFO] [stderr]    |            ----------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 39 |     event_tx: Sender<WatchEvent>,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `trace_begin` is never used
[INFO] [stderr]    --> src/executor/mod.rs:202:8
[INFO] [stderr]     |
[INFO] [stderr] 128 | impl BuildState {
[INFO] [stderr]     | --------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 202 |     fn trace_begin(&self, target: &str, command: Option<&str>, tid: u32) -> u64 {
[INFO] [stderr]     |        ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `run_command` is never used
[INFO] [stderr]  --> src/executor/runner.rs:5:8
[INFO] [stderr]   |
[INFO] [stderr] 5 | pub fn run_command(cmd: &str) -> io::Result<Output> {
[INFO] [stderr]   |        ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `run_command_streaming` is never used
[INFO] [stderr]   --> src/executor/runner.rs:15:8
[INFO] [stderr]    |
[INFO] [stderr] 15 | pub fn run_command_streaming(cmd: &str) -> io::Result<i32> {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `command_exists` is never used
[INFO] [stderr]   --> src/executor/runner.rs:25:8
[INFO] [stderr]    |
[INFO] [stderr] 25 | pub fn command_exists(name: &str) -> bool {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `rules` is never read
[INFO] [stderr]   --> src/graph/mod.rs:25:5
[INFO] [stderr]    |
[INFO] [stderr] 21 | pub struct Graph {
[INFO] [stderr]    |            ----- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 25 |     rules: HashMap<String, Rule>,
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Graph` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `is_tty` is never read
[INFO] [stderr]    --> src/output.rs:238:5
[INFO] [stderr]     |
[INFO] [stderr] 234 | pub struct ProgressHandle {
[INFO] [stderr]     |            -------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 238 |     is_tty: bool,
[INFO] [stderr]     |     ^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `ProgressHandle` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `content` and `continued_line` are never read
[INFO] [stderr]  --> src/parser/lexer.rs:3:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | pub struct Lexer<'a> {
[INFO] [stderr]   |            ----- fields in this struct
[INFO] [stderr] 3 |     content: &'a str,
[INFO] [stderr]   |     ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 7 |     continued_line: Option<String>,
[INFO] [stderr]   |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `blobs` is never read
[INFO] [stderr]   --> src/server/handler.rs:25:5
[INFO] [stderr]    |
[INFO] [stderr] 22 | pub struct CacheServer {
[INFO] [stderr]    |            ----------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 25 |     blobs: BlobStore,
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `start_timestamp` is never read
[INFO] [stderr]   --> src/trace.rs:39:5
[INFO] [stderr]    |
[INFO] [stderr] 36 | pub struct BuildTrace {
[INFO] [stderr]    |            ---------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 39 |     start_timestamp: u64,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `rninja` (lib) generated 31 warnings (run `cargo fix --lib -p rninja` to apply 19 suggestions)
[INFO] [stderr] warning: unused import: `GcReport`
[INFO] [stderr]  --> src/admin/mod.rs:9:45
[INFO] [stderr]   |
[INFO] [stderr] 9 | pub use cache_gc::{run_cache_gc, GcOptions, GcReport};
[INFO] [stderr]   |                                             ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `HealthCheck`, `HealthReport`, and `HealthStatus`
[INFO] [stderr]   --> src/admin/mod.rs:10:42
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub use cache_health::{run_cache_health, HealthCheck, HealthReport, HealthStatus};
[INFO] [stderr]    |                                          ^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `CacheStatsReport`
[INFO] [stderr]   --> src/admin/mod.rs:11:40
[INFO] [stderr]    |
[INFO] [stderr] 11 | pub use cache_stats::{run_cache_stats, CacheStatsReport};
[INFO] [stderr]    |                                        ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `ClientStats`
[INFO] [stderr]  --> src/cache/remote/mod.rs:9:18
[INFO] [stderr]   |
[INFO] [stderr] 9 | pub use client::{ClientStats, RemoteCacheClient, RemoteClientConfig, RetryConfig};
[INFO] [stderr]   |                  ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `ErrorCode`, `PROTOCOL_VERSION`, `RequestEnvelope`, `Request`, and `Response`
[INFO] [stderr]   --> src/cache/remote/mod.rs:12:5
[INFO] [stderr]    |
[INFO] [stderr] 12 |     ErrorCode, Request, RequestEnvelope, Response, WireCacheEntry, PROTOCOL_VERSION,
[INFO] [stderr]    |     ^^^^^^^^^  ^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^                  ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `CURRENT_SCHEMA_VERSION`, `SchemaInfo`, and `check_and_migrate`
[INFO] [stderr]  --> src/cache/mod.rs:9:18
[INFO] [stderr]   |
[INFO] [stderr] 9 | pub use schema::{check_and_migrate, SchemaInfo, CURRENT_SCHEMA_VERSION};
[INFO] [stderr]   |                  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `RemoteCacheConfig`
[INFO] [stderr]   --> src/cache/mod.rs:10:66
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub use config::{CacheConfig, CacheMode, PullPolicy, PushPolicy, RemoteCacheConfig};
[INFO] [stderr]    |                                                                  ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `get_mtime` and `needs_rebuild` are never used
[INFO] [stderr]    --> src/buildlog.rs:112:12
[INFO] [stderr]     |
[INFO] [stderr]  33 | impl BuildLog {
[INFO] [stderr]     | ------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 112 |     pub fn get_mtime(&self, output: &str) -> Option<u64> {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 156 |     pub fn needs_rebuild(&self, output: &str, command_hash: u64) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: methods `invalidate`, `prefetch`, `prefetch_parallel`, and `insert` are never used
[INFO] [stderr]    --> src/buildlog.rs:208:12
[INFO] [stderr]     |
[INFO] [stderr] 189 | impl MtimeCache {
[INFO] [stderr]     | --------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 208 |     pub fn invalidate(&mut self, path: &Path) {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 213 |     pub fn prefetch(&mut self, paths: &[&Path]) {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 223 |     pub fn prefetch_parallel(&mut self, paths: &[PathBuf]) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 249 |     pub fn insert(&mut self, path: PathBuf, mtime: Option<u64>) {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `remote_hits`, `remote_misses`, `remote_errors`, and `remote_timeouts` are never read
[INFO] [stderr]   --> src/cache/mod.rs:29:9
[INFO] [stderr]    |
[INFO] [stderr] 23 | pub struct CacheStats {
[INFO] [stderr]    |            ---------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 29 |     pub remote_hits: usize,
[INFO] [stderr]    |         ^^^^^^^^^^^
[INFO] [stderr] 30 |     pub remote_misses: usize,
[INFO] [stderr]    |         ^^^^^^^^^^^^^
[INFO] [stderr] 31 |     pub remote_errors: usize,
[INFO] [stderr]    |         ^^^^^^^^^^^^^
[INFO] [stderr] 32 |     pub remote_timeouts: usize,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `CacheStats` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: methods `hit_rate`, `total_hits`, `total_misses`, and `combined_hit_rate` are never used
[INFO] [stderr]   --> src/cache/mod.rs:36:12
[INFO] [stderr]    |
[INFO] [stderr] 35 | impl CacheStats {
[INFO] [stderr]    | --------------- methods in this implementation
[INFO] [stderr] 36 |     pub fn hit_rate(&self) -> f64 {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 45 |     pub fn total_hits(&self) -> usize {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 49 |     pub fn total_misses(&self) -> usize {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 53 |     pub fn combined_hit_rate(&self) -> f64 {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `remote` is never read
[INFO] [stderr]   --> src/cache/mod.rs:74:5
[INFO] [stderr]    |
[INFO] [stderr] 64 | pub struct Cache {
[INFO] [stderr]    |            ----- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 74 |     remote: Option<RemoteCacheClient>,
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple methods are never used
[INFO] [stderr]    --> src/cache/mod.rs:149:12
[INFO] [stderr]     |
[INFO] [stderr]  77 | impl Cache {
[INFO] [stderr]     | ---------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 149 |     pub fn mode(&self) -> CacheMode {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 154 |     pub fn has_remote(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 159 |     pub async fn connect_remote(&self) -> Result<(), RemoteCacheError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 223 |     pub async fn lookup_async(&self, key: &str) -> Option<CacheEntry> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 273 |     async fn lookup_remote(&self, key: &str) -> Option<CacheEntry> {
[INFO] [stderr]     |              ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 351 |     pub async fn store_async(
[INFO] [stderr]     |                  ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 391 |     fn should_push(&self) -> bool {
[INFO] [stderr]     |        ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 403 |     pub fn restore(&self, entry: &CacheEntry) -> Result<bool, ExecError> {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 414 |     pub fn stats(&self) -> CacheStats {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 419 |     pub fn gc(&self) -> Result<GcStats, ExecError> {
[INFO] [stderr]     |            ^^
[INFO] [stderr] ...
[INFO] [stderr] 467 |     pub fn is_enabled(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `GcStats` is never constructed
[INFO] [stderr]    --> src/cache/mod.rs:474:12
[INFO] [stderr]     |
[INFO] [stderr] 474 | pub struct GcStats {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `gc` and `total_size` are never used
[INFO] [stderr]    --> src/cache/blob.rs:133:12
[INFO] [stderr]     |
[INFO] [stderr]  14 | impl BlobStore {
[INFO] [stderr]     | -------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 133 |     pub fn gc(&self) -> Result<BlobGcStats, ExecError> {
[INFO] [stderr]     |            ^^
[INFO] [stderr] ...
[INFO] [stderr] 158 |     pub fn total_size(&self) -> u64 {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `BlobGcStats` is never constructed
[INFO] [stderr]    --> src/cache/blob.rs:179:12
[INFO] [stderr]     |
[INFO] [stderr] 179 | pub struct BlobGcStats {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `auto_migrate` is never read
[INFO] [stderr]    --> src/cache/config.rs:183:9
[INFO] [stderr]     |
[INFO] [stderr] 169 | pub struct CacheConfig {
[INFO] [stderr]     |            ----------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 183 |     pub auto_migrate: bool,
[INFO] [stderr]     |         ^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `CacheConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `disabled` is never used
[INFO] [stderr]    --> src/cache/config.rs:249:12
[INFO] [stderr]     |
[INFO] [stderr] 200 | impl CacheConfig {
[INFO] [stderr]     | ---------------- associated function in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 249 |     pub fn disabled() -> Self {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `hash_bytes` is never used
[INFO] [stderr]   --> src/cache/hasher.rs:76:8
[INFO] [stderr]    |
[INFO] [stderr] 76 | pub fn hash_bytes(data: &[u8]) -> String {
[INFO] [stderr]    |        ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `client_id`, `connect_timeout`, `request_timeout`, `chunk_size`, and `retry` are never read
[INFO] [stderr]   --> src/cache/remote/client.rs:29:9
[INFO] [stderr]    |
[INFO] [stderr] 23 | pub struct RemoteClientConfig {
[INFO] [stderr]    |            ------------------ fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 29 |     pub client_id: Option<String>,
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr] 30 |     /// Connection timeout
[INFO] [stderr] 31 |     pub connect_timeout: Duration,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^
[INFO] [stderr] 32 |     /// Request timeout
[INFO] [stderr] 33 |     pub request_timeout: Duration,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 37 |     pub chunk_size: usize,
[INFO] [stderr]    |         ^^^^^^^^^^
[INFO] [stderr] 38 |     /// Retry configuration
[INFO] [stderr] 39 |     pub retry: RetryConfig,
[INFO] [stderr]    |         ^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `RemoteClientConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `max_retries`, `initial_backoff`, and `max_backoff` are never read
[INFO] [stderr]   --> src/cache/remote/client.rs:61:9
[INFO] [stderr]    |
[INFO] [stderr] 59 | pub struct RetryConfig {
[INFO] [stderr]    |            ----------- fields in this struct
[INFO] [stderr] 60 |     /// Maximum number of retry attempts
[INFO] [stderr] 61 |     pub max_retries: u32,
[INFO] [stderr]    |         ^^^^^^^^^^^
[INFO] [stderr] 62 |     /// Initial backoff duration
[INFO] [stderr] 63 |     pub initial_backoff: Duration,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^
[INFO] [stderr] 64 |     /// Maximum backoff duration
[INFO] [stderr] 65 |     pub max_backoff: Duration,
[INFO] [stderr]    |         ^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `RetryConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `requests_failed` and `retries` are never read
[INFO] [stderr]   --> src/cache/remote/client.rs:82:9
[INFO] [stderr]    |
[INFO] [stderr] 80 | pub struct ClientStats {
[INFO] [stderr]    |            ----------- fields in this struct
[INFO] [stderr] 81 |     pub requests_sent: AtomicU64,
[INFO] [stderr] 82 |     pub requests_failed: AtomicU64,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 87 |     pub retries: AtomicU64,
[INFO] [stderr]    |         ^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `ClientStats` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: methods `record_failure` and `record_retry` are never used
[INFO] [stderr]    --> src/cache/remote/client.rs:118:12
[INFO] [stderr]     |
[INFO] [stderr]  93 | impl ClientStats {
[INFO] [stderr]     | ---------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 118 |     pub fn record_failure(&self) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 122 |     pub fn record_retry(&self) {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `config`, `semaphore`, and `stats` are never read
[INFO] [stderr]    --> src/cache/remote/client.rs:129:5
[INFO] [stderr]     |
[INFO] [stderr] 128 | pub struct RemoteCacheClient {
[INFO] [stderr]     |            ----------------- fields in this struct
[INFO] [stderr] 129 |     config: RemoteClientConfig,
[INFO] [stderr]     |     ^^^^^^
[INFO] [stderr] 130 |     socket: RwLock<Option<nng::Socket>>,
[INFO] [stderr] 131 |     semaphore: Arc<Semaphore>,
[INFO] [stderr]     |     ^^^^^^^^^
[INFO] [stderr] 132 |     stats: Arc<ClientStats>,
[INFO] [stderr]     |     ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple methods are never used
[INFO] [stderr]    --> src/cache/remote/client.rs:163:18
[INFO] [stderr]     |
[INFO] [stderr] 136 | impl RemoteCacheClient {
[INFO] [stderr]     | ---------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 163 |     pub async fn connect(&self) -> Result<(), RemoteCacheError> {
[INFO] [stderr]     |                  ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 206 |     pub fn is_connected(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 211 |     pub fn stats(&self) -> &ClientStats {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 229 |     async fn send_request(&self, request: Request) -> Result<Response, RemoteCacheError> {
[INFO] [stderr]     |              ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 286 |     async fn send_with_retry(&self, request: Request) -> Result<Response, RemoteCacheError> {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 319 |     pub async fn ping(&self) -> Result<String, RemoteCacheError> {
[INFO] [stderr]     |                  ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 330 |     pub async fn exists(&self, keys: &[&str]) -> Result<HashMap<String, bool>, RemoteCacheError> {
[INFO] [stderr]     |                  ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 345 |     pub async fn lookup(&self, key: &str) -> Result<Option<WireCacheEntry>, RemoteCacheError> {
[INFO] [stderr]     |                  ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 367 |     pub async fn pull_blobs(
[INFO] [stderr]     |                  ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 398 |     pub async fn push_entry(
[INFO] [stderr]     |                  ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 418 |     pub async fn push_blob(&self, hash: &str, data: &[u8]) -> Result<(), RemoteCacheError> {
[INFO] [stderr]     |                  ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 454 |     pub async fn push_blob_from_file(&self, path: &Path) -> Result<String, RemoteCacheError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 466 |     pub async fn server_stats(&self) -> Result<(u64, u64, u64, u64), RemoteCacheError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variants `ConnectionFailed`, `ServerError`, `InvalidResponse`, `BlobTransferFailed`, and `ChecksumMismatch` are never constructed
[INFO] [stderr]   --> src/cache/remote/error.rs:11:5
[INFO] [stderr]    |
[INFO] [stderr]  8 | pub enum RemoteCacheError {
[INFO] [stderr]    |          ---------------- variants in this enum
[INFO] [stderr] ...
[INFO] [stderr] 11 |     ConnectionFailed(String),
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 27 |     ServerError { code: ErrorCode, message: String },
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 43 |     InvalidResponse(String),
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 51 |     BlobTransferFailed(String),
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 55 |     ChecksumMismatch {
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `RemoteCacheError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `from_entry`, `to_outputs`, and `created_time` are never used
[INFO] [stderr]   --> src/cache/remote/protocol.rs:60:12
[INFO] [stderr]    |
[INFO] [stderr] 59 | impl WireCacheEntry {
[INFO] [stderr]    | ------------------- associated items in this implementation
[INFO] [stderr] 60 |     pub fn from_entry(command: &str, outputs: &[(PathBuf, String)], created: SystemTime) -> Self {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 76 |     pub fn to_outputs(&self) -> Vec<(PathBuf, String)> {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 83 |     pub fn created_time(&self) -> SystemTime {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `is_error` is never used
[INFO] [stderr]    --> src/cache/remote/protocol.rs:194:12
[INFO] [stderr]     |
[INFO] [stderr] 186 | impl Response {
[INFO] [stderr]     | ------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 194 |     pub fn is_error(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SCHEMA_KEY` is never used
[INFO] [stderr]   --> src/cache/schema.rs:13:11
[INFO] [stderr]    |
[INFO] [stderr] 13 | pub const SCHEMA_KEY: &[u8] = b"__rninja_schema__";
[INFO] [stderr]    |           ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `MigrationStats` is never constructed
[INFO] [stderr]   --> src/cache/schema.rs:67:12
[INFO] [stderr]    |
[INFO] [stderr] 67 | pub struct MigrationStats {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `check_and_migrate` is never used
[INFO] [stderr]   --> src/cache/schema.rs:75:8
[INFO] [stderr]    |
[INFO] [stderr] 75 | pub fn check_and_migrate(db: &sled::Db, auto_migrate: bool) -> Result<SchemaInfo, ExecError> {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `migrate` is never used
[INFO] [stderr]    --> src/cache/schema.rs:151:4
[INFO] [stderr]     |
[INFO] [stderr] 151 | fn migrate(db: &sled::Db, from_version: u32) -> Result<MigrationStats, ExecError> {
[INFO] [stderr]     |    ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `keep_depfile` is never used
[INFO] [stderr]   --> src/cli.rs:75:12
[INFO] [stderr]    |
[INFO] [stderr] 68 | impl Cli {
[INFO] [stderr]    | -------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 75 |     pub fn keep_depfile(&self) -> bool {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `default_config_path` is never used
[INFO] [stderr]    --> src/config.rs:155:12
[INFO] [stderr]     |
[INFO] [stderr] 102 | impl Config {
[INFO] [stderr]     | ----------- associated function in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 155 |     pub fn default_config_path() -> Option<PathBuf> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variants `UnknownRule` and `MissingVariable` are never constructed
[INFO] [stderr]   --> src/error.rs:9:5
[INFO] [stderr]    |
[INFO] [stderr]  4 | pub enum ParseError {
[INFO] [stderr]    |          ---------- variants in this enum
[INFO] [stderr] ...
[INFO] [stderr]  9 |     UnknownRule { name: String },
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 15 |     MissingVariable { var: String, rule: String },
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `ParseError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: method `nodes` is never used
[INFO] [stderr]    --> src/graph/mod.rs:120:12
[INFO] [stderr]     |
[INFO] [stderr]  32 | impl Graph {
[INFO] [stderr]     | ---------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 120 |     pub fn nodes(&self) -> impl Iterator<Item = &Node> {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `rule`, `restat`, and `generator` are never read
[INFO] [stderr]   --> src/graph/node.rs:15:9
[INFO] [stderr]    |
[INFO] [stderr]  3 | pub struct Node {
[INFO] [stderr]    |            ---- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 15 |     pub rule: String,
[INFO] [stderr]    |         ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 21 |     pub restat: bool,
[INFO] [stderr]    |         ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 27 |     pub generator: bool,
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Node` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: method `display` is never used
[INFO] [stderr]   --> src/graph/node.rs:72:12
[INFO] [stderr]    |
[INFO] [stderr] 34 | impl Node {
[INFO] [stderr]    | --------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 72 |     pub fn display(&self) -> &str {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `BuildMetrics` is never constructed
[INFO] [stderr]   --> src/metrics/mod.rs:12:12
[INFO] [stderr]    |
[INFO] [stderr] 12 | pub struct BuildMetrics {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/metrics/mod.rs:40:12
[INFO] [stderr]     |
[INFO] [stderr]  39 | impl BuildMetrics {
[INFO] [stderr]     | ----------------- associated items in this implementation
[INFO] [stderr]  40 |     pub fn new() -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  44 |     pub fn record_target_built(&self, exec_time: Duration) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  50 |     pub fn record_target_skipped(&self) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  54 |     pub fn record_target_failed(&self) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  58 |     pub fn record_cache_hit(&self, lookup_time: Duration) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  64 |     pub fn record_cache_miss(&self, lookup_time: Duration) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  70 |     pub fn record_cache_store(&self, store_time: Duration) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  75 |     pub fn record_queue_depth(&self, depth: usize) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  82 |     pub fn set_total_targets(&self, count: usize) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  86 |     pub fn set_build_time(&self, duration: Duration) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  91 |     pub fn cache_hit_rate(&self) -> f64 {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 103 |     pub fn snapshot(&self) -> MetricsSnapshot {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `cache_store_time_us` is never read
[INFO] [stderr]    --> src/metrics/mod.rs:140:9
[INFO] [stderr]     |
[INFO] [stderr] 126 | pub struct MetricsSnapshot {
[INFO] [stderr]     |            --------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 140 |     pub cache_store_time_us: u64,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `MetricsSnapshot` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: method `to_json` is never used
[INFO] [stderr]    --> src/metrics/mod.rs:154:12
[INFO] [stderr]     |
[INFO] [stderr] 144 | impl MetricsSnapshot {
[INFO] [stderr]     | -------------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 154 |     pub fn to_json(&self) -> String {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant `Error` is never constructed
[INFO] [stderr]   --> src/output.rs:70:5
[INFO] [stderr]    |
[INFO] [stderr] 27 | pub enum JsonEvent<'a> {
[INFO] [stderr]    |          --------- variant in this enum
[INFO] [stderr] ...
[INFO] [stderr] 70 |     Error {
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `JsonEvent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Styles` is never constructed
[INFO] [stderr]   --> src/output.rs:88:12
[INFO] [stderr]    |
[INFO] [stderr] 88 | pub struct Styles {
[INFO] [stderr]    |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ProgressReporter` is never constructed
[INFO] [stderr]    --> src/output.rs:111:12
[INFO] [stderr]     |
[INFO] [stderr] 111 | pub struct ProgressReporter {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/output.rs:124:12
[INFO] [stderr]     |
[INFO] [stderr] 123 | impl ProgressReporter {
[INFO] [stderr]     | --------------------- associated items in this implementation
[INFO] [stderr] 124 |     pub fn new(total: usize, verbose: bool) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 128 |     pub fn with_mode(total: usize, verbose: bool, output_mode: OutputMode, parallelism: usize) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 144 |     pub fn handle(&self) -> ProgressHandle {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 157 |     pub fn start(&self) {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 174 |     pub fn finish(&self, success: bool, duration_ms: u64) {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 179 |     pub fn finish_with_cache(&self, success: bool, duration_ms: u64, cache_hits: Option<usize>, cache_misses: Option<usize>) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 222 |     pub fn disable(&self) {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 227 |     pub fn output_mode(&self) -> OutputMode {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ProgressHandle` is never constructed
[INFO] [stderr]    --> src/output.rs:234:12
[INFO] [stderr]     |
[INFO] [stderr] 234 | pub struct ProgressHandle {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple methods are never used
[INFO] [stderr]    --> src/output.rs:246:12
[INFO] [stderr]     |
[INFO] [stderr] 244 | impl ProgressHandle {
[INFO] [stderr]     | ------------------- methods in this implementation
[INFO] [stderr] 245 |     /// Report a target being built
[INFO] [stderr] 246 |     pub fn building(&self, target: &str, command: Option<&str>) {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 280 |     pub fn finished(&self, target: &str, success: bool, error: Option<&str>) {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 314 |     pub fn cache_hit(&self, target: &str) {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 342 |     pub fn error(&self, target: &str, message: &str) {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 363 |     pub fn increment(&self) {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 368 |     pub fn current(&self) -> usize {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 373 |     pub fn output_mode(&self) -> OutputMode {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `name` is never read
[INFO] [stderr]   --> src/parser/manifest.rs:25:9
[INFO] [stderr]    |
[INFO] [stderr] 24 | pub struct Rule {
[INFO] [stderr]    |            ---- field in this struct
[INFO] [stderr] 25 |     pub name: String,
[INFO] [stderr]    |         ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Rule` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `name` is never read
[INFO] [stderr]   --> src/parser/manifest.rs:89:9
[INFO] [stderr]    |
[INFO] [stderr] 88 | pub struct Pool {
[INFO] [stderr]    |            ---- field in this struct
[INFO] [stderr] 89 |     pub name: String,
[INFO] [stderr]    |         ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Pool` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ServerStats` is never constructed
[INFO] [stderr]   --> src/server/mod.rs:21:12
[INFO] [stderr]    |
[INFO] [stderr] 21 | pub struct ServerStats {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `record_request` is never used
[INFO] [stderr]   --> src/server/mod.rs:33:12
[INFO] [stderr]    |
[INFO] [stderr] 32 | impl ServerStats {
[INFO] [stderr]    | ---------------- method in this implementation
[INFO] [stderr] 33 |     pub fn record_request(&self, success: bool, bytes_in: usize, bytes_out: usize) {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `run_server` is never used
[INFO] [stderr]   --> src/server/mod.rs:48:14
[INFO] [stderr]    |
[INFO] [stderr] 48 | pub async fn run_server(config: ServerConfig) -> Result<(), ExecError> {
[INFO] [stderr]    |              ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `is_required` and `token_count` are never used
[INFO] [stderr]   --> src/server/auth.rs:42:12
[INFO] [stderr]    |
[INFO] [stderr] 15 | impl TokenValidator {
[INFO] [stderr]    | ------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 42 |     pub fn is_required(&self) -> bool {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 47 |     pub fn token_count(&self) -> usize {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `is_allowed` is never used
[INFO] [stderr]   --> src/server/auth.rs:64:12
[INFO] [stderr]    |
[INFO] [stderr] 63 | impl AuthResult {
[INFO] [stderr]    | --------------- method in this implementation
[INFO] [stderr] 64 |     pub fn is_allowed(&self) -> bool {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `storage_dir`, `max_storage_size`, `workers`, `max_connections`, and `entry_ttl_secs` are never read
[INFO] [stderr]   --> src/server/config.rs:16:9
[INFO] [stderr]    |
[INFO] [stderr]  9 | pub struct ServerConfig {
[INFO] [stderr]    |            ------------ fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 16 |     pub storage_dir: PathBuf,
[INFO] [stderr]    |         ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 20 |     pub max_storage_size: Option<u64>,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 28 |     pub workers: usize,
[INFO] [stderr]    |         ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 32 |     pub max_connections: usize,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 36 |     pub entry_ttl_secs: Option<u64>,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `ServerConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `from_file`, `from_env`, and `entry_ttl` are never used
[INFO] [stderr]   --> src/server/config.rs:55:12
[INFO] [stderr]    |
[INFO] [stderr] 53 | impl ServerConfig {
[INFO] [stderr]    | ----------------- associated items in this implementation
[INFO] [stderr] 54 |     /// Load configuration from a TOML file
[INFO] [stderr] 55 |     pub fn from_file(path: &std::path::Path) -> Result<Self, Box<dyn std::error::Error>> {
[INFO] [stderr]    |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 62 |     pub fn from_env() -> Self {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 93 |     pub fn entry_ttl(&self) -> Option<Duration> {
[INFO] [stderr]    |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `CacheServer` is never constructed
[INFO] [stderr]   --> src/server/handler.rs:22:12
[INFO] [stderr]    |
[INFO] [stderr] 22 | pub struct CacheServer {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/server/handler.rs:33:12
[INFO] [stderr]     |
[INFO] [stderr]  31 | impl CacheServer {
[INFO] [stderr]     | ---------------- associated items in this implementation
[INFO] [stderr]  32 |     /// Create a new cache server
[INFO] [stderr]  33 |     pub fn new(config: ServerConfig) -> Result<Self, ExecError> {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  74 |     pub async fn run(&self) -> Result<(), ExecError> {
[INFO] [stderr]     |                  ^^^
[INFO] [stderr] ...
[INFO] [stderr] 128 |     async fn handle_request(&self, data: &[u8]) -> Response {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 177 |     fn handle_ping(&self) -> Response {
[INFO] [stderr]     |        ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 187 |     fn handle_stats(&self) -> Response {
[INFO] [stderr]     |        ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 203 |     fn handle_exists(&self, keys: &[String]) -> Response {
[INFO] [stderr]     |        ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 212 |     fn handle_lookup(&self, key: &str) -> Response {
[INFO] [stderr]     |        ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 248 |     fn handle_push_entry(&self, key: &str, wire_entry: WireCacheEntry) -> Response {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 282 |     fn handle_push_blob(&self, hash: &str, data: &[u8], offset: u64, total: u64) -> Response {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 311 |     fn handle_push_blob_complete(&self, hash: &str, _checksum: &str) -> Response {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 323 |     fn handle_pull_blobs(&self, hashes: &[String]) -> Response {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 334 |     fn blob_path(&self, hash: &str) -> PathBuf {
[INFO] [stderr]     |        ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `begin_target`, `end_target`, `instant`, and `critical_path` are never used
[INFO] [stderr]    --> src/trace.rs:72:12
[INFO] [stderr]     |
[INFO] [stderr]  44 | impl BuildTrace {
[INFO] [stderr]     | --------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  72 |     pub fn begin_target(&self, target: &str, command: Option<&str>, tid: u32) -> u64 {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 100 |     pub fn end_target(&self, target: &str, tid: u32, cache_hit: bool) {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 186 |     pub fn instant(&self, name: &str, category: &str, tid: u32) {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 254 |     pub fn critical_path(&self) -> Vec<String> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `total_time_us`, `avg_time_us`, `max_time_us`, and `wall_time_us` are never read
[INFO] [stderr]    --> src/trace.rs:339:9
[INFO] [stderr]     |
[INFO] [stderr] 336 | pub struct TraceStats {
[INFO] [stderr]     |            ---------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 339 |     pub total_time_us: u64,
[INFO] [stderr]     |         ^^^^^^^^^^^^^
[INFO] [stderr] 340 |     pub avg_time_us: u64,
[INFO] [stderr]     |         ^^^^^^^^^^^
[INFO] [stderr] 341 |     pub max_time_us: u64,
[INFO] [stderr]     |         ^^^^^^^^^^^
[INFO] [stderr] 342 |     pub wall_time_us: u64,
[INFO] [stderr]     |         ^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `TraceStats` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: methods `parallelism` and `summary` are never used
[INFO] [stderr]    --> src/trace.rs:347:12
[INFO] [stderr]     |
[INFO] [stderr] 345 | impl TraceStats {
[INFO] [stderr]     | --------------- methods in this implementation
[INFO] [stderr] 346 |     /// Calculate parallelism (total CPU time / wall time)
[INFO] [stderr] 347 |     pub fn parallelism(&self) -> f64 {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 356 |     pub fn summary(&self) -> String {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `rninja` (lib test) generated 31 warnings (31 duplicates)
[INFO] [stderr] warning: `rninja` (bin "rninja" test) generated 87 warnings (25 duplicates) (run `cargo fix --bin "rninja" -p rninja --tests` to apply 7 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.58s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/rninja-d6d41ce9bf5b1def)
[INFO] [stdout] 
[INFO] [stdout] running 60 tests
[INFO] [stdout] test buildlog::tests::test_hash_command ... ok
[INFO] [stdout] test buildlog::tests::test_build_log_roundtrip ... ok
[INFO] [stdout] test cache::blob::tests::test_store_and_restore ... ok
[INFO] [stdout] test buildlog::tests::test_mtime_cache ... ok
[INFO] [stdout] test cache::config::tests::test_parse_size ... ok
[INFO] [stdout] test cache::blob::tests::test_deduplication ... ok
[INFO] [stdout] test cache::hasher::tests::test_action_key_deterministic ... ok
[INFO] [stdout] test cache::remote::client::tests::test_config_validation ... ok
[INFO] [stdout] test cache::remote::client::tests::test_stats_recording ... ok
[INFO] [stdout] test cache::remote::error::tests::test_fatal_errors ... ok
[INFO] [stdout] test cache::hasher::tests::test_hash_file ... ok
[INFO] [stdout] test cache::remote::error::tests::test_retryable_errors ... ok
[INFO] [stdout] test cache::hasher::tests::test_action_key_differs_by_command ... ok
[INFO] [stdout] test cache::entry::tests::test_roundtrip ... ok
[INFO] [stdout] test cache::remote::protocol::tests::test_response_roundtrip ... ok
[INFO] [stdout] test cache::schema::tests::test_schema_info_roundtrip ... ok
[INFO] [stdout] test client::connection::tests::test_custom_socket_path ... ok
[INFO] [stdout] test config::tests::test_default_config ... ok
[INFO] [stdout] test daemon::protocol::tests::test_request_roundtrip ... ok
[INFO] [stdout] test daemon::protocol::tests::test_build_request ... ok
[INFO] [stdout] test config::tests::test_parse_sample_config ... ok
[INFO] [stdout] test daemon::server::tests::test_server_creation ... ok
[INFO] [stdout] test cache::remote::protocol::tests::test_error_response ... ok
[INFO] [stdout] test client::connection::tests::test_client_creation ... ok
[INFO] [stdout] test daemon::session::tests::test_session_completion ... ok
[INFO] [stdout] test cache::remote::client::tests::test_client_id_generation ... ok
[INFO] [stdout] test daemon::protocol::tests::test_response_roundtrip ... ok
[INFO] [stdout] test cache::schema::tests::test_schema_version ... ok
[INFO] [stdout] test cache::remote::protocol::tests::test_request_roundtrip ... ok
[INFO] [stdout] test daemon::state::tests::test_invalidate ... ok
[INFO] [stdout] test daemon::session::tests::test_session_creation ... ok
[INFO] [stdout] test daemon::state::tests::test_daemon_state_creation ... ok
[INFO] [stdout] test daemon::watcher::tests::test_watcher_creation ... ok
[INFO] [stdout] test executor::depfile::tests::test_escaped_spaces ... ok
[INFO] [stdout] test executor::depfile::tests::test_multiline_depfile ... ok
[INFO] [stdout] test executor::depfile::tests::test_simple_depfile ... ok
[INFO] [stdout] test parser::lexer::tests::test_escaped_dollar ... ok
[INFO] [stdout] test graph::tests::test_simple_graph ... ok
[INFO] [stdout] test metrics::prometheus::tests::test_prometheus_export ... ok
[INFO] [stdout] test parser::lexer::tests::test_simple_lines ... ok
[INFO] [stdout] test parser::tests::test_parse_build ... ok
[INFO] [stdout] test parser::lexer::tests::test_line_continuation ... ok
[INFO] [stdout] test parser::lexer::tests::test_peek ... ok
[INFO] [stdout] test output::tests::test_format_duration ... ok
[INFO] [stdout] test daemon::session::tests::test_session_manager ... ok
[INFO] [stdout] test daemon::watcher::tests::test_watched_count ... ok
[INFO] [stdout] test server::auth::tests::test_auth_not_required ... ok
[INFO] [stdout] test parser::tests::test_parse_variables ... ok
[INFO] [stdout] test trace::tests::test_slow_targets ... ok
[INFO] [stdout] test parser::tests::test_parse_simple_rule ... ok
[INFO] [stdout] test trace::tests::test_trace_collection ... ok
[INFO] [stdout] test parser::tests::test_parse_default ... ok
[INFO] [stdout] test server::auth::tests::test_invalid_token ... ok
[INFO] [stdout] test server::auth::tests::test_no_token ... ok
[INFO] [stdout] test server::auth::tests::test_valid_token ... ok
[INFO] [stdout] test parser::tests::test_parse_pool ... ok
[INFO] [stdout] test graph::tests::test_topo_order ... ok
[INFO] [stdout] test graph::tests::test_cycle_detection ... ok
[INFO] [stdout] test server::config::tests::test_parse_size ... ok
[INFO] [stdout] test server::config::tests::test_default_config ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- server::config::tests::test_default_config stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'server::config::tests::test_default_config' (76) panicked at src/server/config.rs:163:9:
[INFO] [stdout] assertion failed: config.auth.require_auth
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x579bc0169aaa - std[ec4e911328de40a6]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x579bc0169aaa - std[ec4e911328de40a6]::backtrace_rs::backtrace::trace_unsynchronized::<std[ec4e911328de40a6]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x579bc0169aaa - std[ec4e911328de40a6]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x579bc0169aaa - <<std[ec4e911328de40a6]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[a96a4c5c53f902a3]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x579bc017f84a - <core[a96a4c5c53f902a3]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x579bc017f84a - core[a96a4c5c53f902a3]::fmt::write
[INFO] [stdout]    6:     0x579bc016ecc2 - std[ec4e911328de40a6]::io::default_write_fmt::<alloc[c960326de6de28e6]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x579bc016ecc2 - <alloc[c960326de6de28e6]::vec::Vec<u8> as std[ec4e911328de40a6]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x579bc01462af - <std[ec4e911328de40a6]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x579bc01462af - std[ec4e911328de40a6]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x579bc0160e19 - std[ec4e911328de40a6]::panicking::default_hook
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x579bc001553c - <alloc[c960326de6de28e6]::boxed::Box<dyn for<'a, 'b> core[a96a4c5c53f902a3]::ops::function::Fn<(&'a std[ec4e911328de40a6]::panic::PanicHookInfo<'b>,), Output = ()> + core[a96a4c5c53f902a3]::marker::Sync + core[a96a4c5c53f902a3]::marker::Send> as core[a96a4c5c53f902a3]::ops::function::Fn<(&std[ec4e911328de40a6]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   12:     0x579bc001553c - test[30c43f9fd66fea90]::test_main_with_exit_callback::<test[30c43f9fd66fea90]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x579bc0160fd2 - <alloc[c960326de6de28e6]::boxed::Box<dyn for<'a, 'b> core[a96a4c5c53f902a3]::ops::function::Fn<(&'a std[ec4e911328de40a6]::panic::PanicHookInfo<'b>,), Output = ()> + core[a96a4c5c53f902a3]::marker::Sync + core[a96a4c5c53f902a3]::marker::Send> as core[a96a4c5c53f902a3]::ops::function::Fn<(&std[ec4e911328de40a6]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   14:     0x579bc0160fd2 - std[ec4e911328de40a6]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x579bc014639a - std[ec4e911328de40a6]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/std/src/panicking.rs:691:13
[INFO] [stdout]   16:     0x579bc013d4b9 - std[ec4e911328de40a6]::sys::backtrace::__rust_end_short_backtrace::<std[ec4e911328de40a6]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x579bc01471fd - __rustc[aa69f48705c57ca8]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x579bc018003c - core[a96a4c5c53f902a3]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x579bc0180002 - core[a96a4c5c53f902a3]::panicking::panic
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/core/src/panicking.rs:150:5
[INFO] [stdout]   20:     0x579bbfe61917 - rninja[d7cfa1bb4b611e8e]::server::config::tests::test_default_config
[INFO] [stdout]                                at /opt/rustwide/workdir/src/server/config.rs:163:9
[INFO] [stdout]   21:     0x579bbfe5cec7 - rninja[d7cfa1bb4b611e8e]::server::config::tests::test_default_config::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/server/config.rs:160:29
[INFO] [stdout]   22:     0x579bbfe9a6d6 - <rninja[d7cfa1bb4b611e8e]::server::config::tests::test_default_config::{closure#0} as core[a96a4c5c53f902a3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x579bc000961b - <fn() -> core[a96a4c5c53f902a3]::result::Result<(), alloc[c960326de6de28e6]::string::String> as core[a96a4c5c53f902a3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x579bc000961b - test[30c43f9fd66fea90]::__rust_begin_short_backtrace::<core[a96a4c5c53f902a3]::result::Result<(), alloc[c960326de6de28e6]::string::String>, fn() -> core[a96a4c5c53f902a3]::result::Result<(), alloc[c960326de6de28e6]::string::String>>
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/test/src/lib.rs:663:18
[INFO] [stdout]   25:     0x579bc001600b - test[30c43f9fd66fea90]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/test/src/lib.rs:686:74
[INFO] [stdout]   26:     0x579bc001600b - <core[a96a4c5c53f902a3]::panic::unwind_safe::AssertUnwindSafe<test[30c43f9fd66fea90]::run_test_in_process::{closure#0}> as core[a96a4c5c53f902a3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   27:     0x579bc001600b - std[ec4e911328de40a6]::panicking::catch_unwind::do_call::<core[a96a4c5c53f902a3]::panic::unwind_safe::AssertUnwindSafe<test[30c43f9fd66fea90]::run_test_in_process::{closure#0}>, core[a96a4c5c53f902a3]::result::Result<(), alloc[c960326de6de28e6]::string::String>>
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/std/src/panicking.rs:581:40
[INFO] [stdout]   28:     0x579bc001600b - std[ec4e911328de40a6]::panicking::catch_unwind::<core[a96a4c5c53f902a3]::result::Result<(), alloc[c960326de6de28e6]::string::String>, core[a96a4c5c53f902a3]::panic::unwind_safe::AssertUnwindSafe<test[30c43f9fd66fea90]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/std/src/panicking.rs:544:19
[INFO] [stdout]   29:     0x579bc001600b - std[ec4e911328de40a6]::panic::catch_unwind::<core[a96a4c5c53f902a3]::panic::unwind_safe::AssertUnwindSafe<test[30c43f9fd66fea90]::run_test_in_process::{closure#0}>, core[a96a4c5c53f902a3]::result::Result<(), alloc[c960326de6de28e6]::string::String>>
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/std/src/panic.rs:359:14
[INFO] [stdout]   30:     0x579bc001600b - test[30c43f9fd66fea90]::run_test_in_process
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/test/src/lib.rs:686:27
[INFO] [stdout]   31:     0x579bc001600b - test[30c43f9fd66fea90]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/test/src/lib.rs:607:43
[INFO] [stdout]   32:     0x579bc0011724 - test[30c43f9fd66fea90]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/test/src/lib.rs:637:41
[INFO] [stdout]   33:     0x579bc0011724 - std[ec4e911328de40a6]::sys::backtrace::__rust_begin_short_backtrace::<test[30c43f9fd66fea90]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   34:     0x579bc0018c12 - std[ec4e911328de40a6]::thread::lifecycle::spawn_unchecked::<test[30c43f9fd66fea90]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   35:     0x579bc0018c12 - <core[a96a4c5c53f902a3]::panic::unwind_safe::AssertUnwindSafe<std[ec4e911328de40a6]::thread::lifecycle::spawn_unchecked<test[30c43f9fd66fea90]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[a96a4c5c53f902a3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   36:     0x579bc0018c12 - std[ec4e911328de40a6]::panicking::catch_unwind::do_call::<core[a96a4c5c53f902a3]::panic::unwind_safe::AssertUnwindSafe<std[ec4e911328de40a6]::thread::lifecycle::spawn_unchecked<test[30c43f9fd66fea90]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/std/src/panicking.rs:581:40
[INFO] [stdout]   37:     0x579bc0018c12 - std[ec4e911328de40a6]::panicking::catch_unwind::<(), core[a96a4c5c53f902a3]::panic::unwind_safe::AssertUnwindSafe<std[ec4e911328de40a6]::thread::lifecycle::spawn_unchecked<test[30c43f9fd66fea90]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/std/src/panicking.rs:544:19
[INFO] [stdout]   38:     0x579bc0018c12 - std[ec4e911328de40a6]::panic::catch_unwind::<core[a96a4c5c53f902a3]::panic::unwind_safe::AssertUnwindSafe<std[ec4e911328de40a6]::thread::lifecycle::spawn_unchecked<test[30c43f9fd66fea90]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/std/src/panic.rs:359:14
[INFO] [stdout]   39:     0x579bc0018c12 - std[ec4e911328de40a6]::thread::lifecycle::spawn_unchecked::<test[30c43f9fd66fea90]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   40:     0x579bc0018c12 - <std[ec4e911328de40a6]::thread::lifecycle::spawn_unchecked<test[30c43f9fd66fea90]::run_test::{closure#1}, ()>::{closure#1} as core[a96a4c5c53f902a3]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   41:     0x579bc0168e6f - <alloc[c960326de6de28e6]::boxed::Box<dyn core[a96a4c5c53f902a3]::ops::function::FnOnce<(), Output = ()> + core[a96a4c5c53f902a3]::marker::Send> as core[a96a4c5c53f902a3]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/alloc/src/boxed.rs:2240:9
[INFO] [stdout]   42:     0x579bc0168e6f - <std[ec4e911328de40a6]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/0abe69e6c16114311cc2700e972492e64d69c28f/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   43:     0x700a324c4aa4 - <unknown>
[INFO] [stdout]   44:     0x700a32551a64 - clone
[INFO] [stdout]   45:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     server::config::tests::test_default_config
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 59 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.70s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--lib`
[INFO] running `Command { std: "docker" "inspect" "64af3d600a58427315255bb01638ba86cdf7195ac93bd3452c5efea00d3fc8a1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "64af3d600a58427315255bb01638ba86cdf7195ac93bd3452c5efea00d3fc8a1", kill_on_drop: false }`
[INFO] [stdout] 64af3d600a58427315255bb01638ba86cdf7195ac93bd3452c5efea00d3fc8a1
